我在.Net / C#/ EF6 / WPF / WCF中构建了一个多层应用程序。
后端是一个mysql数据库,带有一个实体框架层来访问数据库。我有一个业务逻辑层和一个外观层来公开服务。
在客户端,一个WPF / MVVM客户端。
我有3个模型,一个用于客户端(“视图域”),一个用于由实体框架(“db domain”)生成的后端,一个用于服务的dto类型。
在客户端我跟踪实体状态更改,我基本上从EntityState
复制System.Data
枚举,并在每次更改属性或创建新实体时设置状态。
例如,我的一项服务公开了Add(Entity e)
和Update(Entity e)
。
我是否应该决定在客户端上调用一个或另一个方法(他知道状态是Added
还是Modified
),还是应该公开一个名为AddOrUpdate(Entity e)
的方法,让后端决定它是新实体还是更新实体?
最好的方法是什么?我应该就此做出客户端或后端方面的决定吗?
答案 0 :(得分:1)
不确定为什么要让客户知道/处理对象的状态 您的问题可能是因为您在两种方法中重用“实体”类而导致的。
我认为你可以使用这样的东西:
Add(InputResource e)
Update(UpdateResource e)
以上都不应具有“州”财产* “InputResource”不应具有Id / Primary Key
我认为上述方法更清晰,但这取决于您的需求 如果你想使用“AddOrUpdate”,我仍然不认为添加一个国家是一个好主意 您可以检查Id属性,如果设置了它是一个更新,如果不是它是一个添加
*当然我在谈论你的公共API 在内部,在您的服务器(BusinessLayer-DataLayer)上,您可能有一个解决方案,根据其状态处理项目,但我不认为您正在考虑这个