多层应用程序中的实体状态变化在哪里



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)上,您可能有一个基于其状态处理项目的解决方案,但我认为您不采用此

最新更新