i在.net/c#/ef6/wpf/wcf中构建多层应用程序。
后端是一个具有实体框架层以访问数据库的MySQL数据库。我有一个业务逻辑层和一个外观层来公开服务。
在客户端,WPF/MVVM客户端。
我有3种型号,一种用于客户端("查看域"),一种用于由实体框架生成的后端(" db域"),一个类似于服务的DTO。
在客户端I跟踪实体状态更改,我基本上从System.Data
复制EntityState
枚举,并在更改属性或创建新实体时设置状态。
例如,我的一项服务公开了Add(Entity e)
和Update(Entity e)
。
我应该决定在客户端上调用一种或另一种方法(他知道状态是Added
还是Modified
),还是应该公开一个称为AddOrUpdate(Entity e)
的单个方法,让后端决定是新的还是更新的实体?
最好的方法是什么?我应该对此做出决策客户端还是后端侧?
不确定为什么要客户知道/处理对象的状态。
您的问题可能是因为您在这两种方法中重复使用"实体"类而引起的。
我认为您可以使用类似的东西:
Add(InputResource e)
Update(UpdateResource e)
以上都不应具有"状态"属性*。
" InputResource"不应具有ID/主键
我认为上述方法更干净,但取决于您的需求。
如果您想使用" addorupdate",我仍然不认为添加状态是一个好主意。
您可以检查ID属性,如果设置为更新,则是添加
*当然我在谈论您的公共API。
在内部,在您的服务器(BusinessLayer-Datalayer)上,您可能有一个基于其状态处理项目的解决方案,但我认为您不采用此