-
Notifications
You must be signed in to change notification settings - Fork 840
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
添加 通过DTO 进行update的方法, 特点是,忽略值为null的属性. #1688
Conversation
说明:在开发的时候,希望代码能实现更高的复用,那么一个更新的方法,我希望在多个不同的场景都可以使用. 但是不同场景涉及的字段有事不一样的,每次都把完整的DTO实体生成出来,既繁琐,又容易出错, 于是想升级这个方法, 不想update的字段,为空就好了,这样不会影响数据库中的原有值.
尤其是像前后端分离,做接口开发的. 有的地方需要更新2个字段,有的需要更新5个字段,前端调用的地方多切不确定. 但是内部逻辑都是一样的. 如果要制作专属的DTO,给每个场景一个,可能DTO的数量要翻及倍. 这是多且无用的代码. |
就没有这种,按需更新的方法来的方便,实用. |
我们项目一个订单的DTO有30多个字段. 一个产品信息的DTO有60个字段. 每次做一个完成的DTO想起来都可怕. |
SetSource + UpdateColumns/IgnoreColumns 还有 fsql.UpdateDict(字典).ExecuteAffrows() |
前提是, 我是接口开发人员,我并不确定,实际应用的人员,要修改哪些字段. |
我不想去提供很多个接口, 接口一:固定修改其中的某5个字段,接口二:固定修改中间的某5个字段,接口三:用于特定修改某3个字段,这样的接口. |
updateDict有一个问题,不能使用,强类型的 Where,并且还要手动设置表名,这样很不方便也容易出错. 如果能解决这2个问题,还好. |
有个大的DTO,有26个字段.但是在实际使用的时候,不同场景只需要修改一部分字段. |
Api 命名换成了 SetDtoIgnore,使用习惯与 SetSourceIgnore 一致 |
v3.2.807-preview20231215 |
说明:在开发的时候,希望代码能实现更高的复用,那么一个编辑方法,我希望在多个不同的场景都可以使用. 但是不同场景涉及的字段有时不一样的,每次都把完整的DTO实体生成出来,既繁琐,又容易出错, 于是想升级这个方法, 不想update的字段,为null就好了,这样不会影响数据库中的原有值. 只更新有实际意义的字段.