系统迁移.netCore 求解

2020-10-10 14:23:48 +08:00
 skyworker
前提: 我们团队的技术栈是: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 前端再做调整成本太高), 有没有做过类似的工作?
1179 次点击
所在节点    问与答
6 条回复
a194259440
2020-10-10 14:49:17 +08:00
有点没看懂,题主的意思是,调用接口时,只传入了三个字段,就导致其它字段全部清空,只有这三个字段有值么?
如果是这样,那就是接口里面的 CRUD 有问题,修改接口就好
jtwor
2020-10-10 14:57:17 +08:00
要么判空 空就不更新 要么整个 form 提交 不要修改三个就提交三个。。
alshlg
2020-10-10 15:17:16 +08:00
字段值都传过去 update,不管有没有修改
PerFectTime
2020-10-10 15:18:53 +08:00
这个得看你用什么数据层的吧,如果你用的 EF,他会自动忽略值为 NULL 的属性不做更新
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
2020-10-10 15:23:01 +08:00
说具体的框架细节吧,最终是 orm 生成的执行语句与 db 交互的,这个交互结果不符合预期,改呗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/713646

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX