V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
skyworker
V2EX  ›  问与答

系统迁移.netCore 求解

  •  
  •   skyworker · 2020-10-10 14:23:48 +08:00 · 1179 次点击
    这是一个创建于 1540 天前的主题,其中的信息可能已经有所发展或是发生改变。
    前提: 我们团队的技术栈是:antd+laravel, 今年接了一个企业的内部定制业务系统, 对方的 IT 负责人是.net 出身, 要求后台用.net 来实现,便于他们后期做小范围业务调整.

    为了尽快搭建软件模型, 团队初期仍然按照 antd+laravel 快速搭建平台, 考虑业务稳定成型后,后台迁移为.netCore. 目前业务逻辑已经完成了, 本来以为 laravel 后台转 netCore 会很简单, 没想到差别还比较大.

    例如某个业务 form 中, 有如下字段:

    总产量
    早班 1 号井量
    中班 1 号井量
    晚班 1 号井量
    早班 2 号井量
    ....

    例如有 40 个 field 吧, 在 laravel CRUD 都很简单,

    // 新增
    $data = $request->all();
    $chanliang = new Chanliang($data);
    $chanliang->save();

    // 修改
    // $request 中传了几个字段, modal 就只修改几个字段
    $data = $request->all();
    $changliang = Chanliang::find($id);
    $changliang->update($data);

    但是在 netCore 中, 新增还好说, 在修改的时候, 如果这 40 个字段中, 客户只修改了 3 个(post 中也只包含这三个字段),其他的都会被自动清空.

    查了一些资料, netCore 中好像并不支持目前现有的修改方法(antd 前端再做调整成本太高), 有没有做过类似的工作?
    6 条回复    2020-10-10 15:23:01 +08:00
    a194259440
        1
    a194259440  
       2020-10-10 14:49:17 +08:00
    有点没看懂,题主的意思是,调用接口时,只传入了三个字段,就导致其它字段全部清空,只有这三个字段有值么?
    如果是这样,那就是接口里面的 CRUD 有问题,修改接口就好
    jtwor
        2
    jtwor  
       2020-10-10 14:57:17 +08:00
    要么判空 空就不更新 要么整个 form 提交 不要修改三个就提交三个。。
    alshlg
        3
    alshlg  
       2020-10-10 15:17:16 +08:00
    字段值都传过去 update,不管有没有修改
    PerFectTime
        4
    PerFectTime  
       2020-10-10 15:18:53 +08:00
    这个得看你用什么数据层的吧,如果你用的 EF,他会自动忽略值为 NULL 的属性不做更新
    grzhan
        5
    grzhan  
       2020-10-10 15:22:22 +08:00
    如果是用 .Net Core 的话,对应的 ORM 可能用的是 EF Core ?
    如果是 EF Core 的话,可以简单参考这篇( https://www.cnblogs.com/cgzl/p/8543772.html
    更新就直接是追踪 Model 的属性,更新属性并 SaveChange 之后就会实现字段的更新( https://images2018.cnblogs.com/blog/986268/201803/986268-20180311220651540-1228571595.png
    dswyzx
        6
    dswyzx  
       2020-10-10 15:23:01 +08:00
    说具体的框架细节吧,最终是 orm 生成的执行语句与 db 交互的,这个交互结果不符合预期,改呗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2656 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 14:59 · PVG 22:59 · LAX 06:59 · JFK 09:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.