我的应用程序中有以下几层:数据层(引用模型)业务层(引用模型、数据)模型服务( WCF )-(引用模型、业务层) UI (WPF/Silver Light) -通过WCF服务连接
如何在UI层的ObservableCollection中检测更改的poco实体?从客户端发送回服务器进行保存?而不是将所有数据发送回服务器端(通过WCF)?
或
如何在UI层对集合中的实体进行增、删、改操作?
我正在使用支持WCF的VS2010/2012 C# EF 5 ADO.NET POCOEntityGenerator (用于从Model.edmx生成.tt模板) SQL Server2012
尽管我找了很多地方都没有找到合适的解决方案。如果你有任何想法,请帮助我。
谢谢..。
下面的链接给出了我创建应用程序所遵循的方法
发布于 2013-12-04 15:05:09
唯一合适的解决方案是手动进行更改跟踪。每个POCO对象都有IsDirty属性,这个对象的每个属性在它的setter中都有IsDirty = true。
一种减少手动的方法是创建一个框架,它将创建包装器类,它将为您完成这项工作,但这需要大量的反射和代码生成。此外,它仍然需要将所有属性定义为虚拟属性。
但通常情况下,您希望避免制作需要这种跟踪的UI。当您想要更改一个实体时,在编辑窗口中仅加载该实体。
发布于 2013-12-09 16:30:25
POCO非常适合在客户端和服务器之间传输数据。但是,如果您正在寻找要在客户端和/或服务器端实际使用的对象,则可能需要考虑使用自跟踪实体( self-tracking entities,STE),因为这些实体包含跟踪其实际更改和状态的逻辑。
更好的解决方案是使用N-Tier Entity Framework,它提供了在n层应用程序中使用EF的功能。有关更多详细信息,请参阅http://ntieref.codeplex.com/。
发布于 2013-12-03 20:54:32
如果您使用EF,那么您的实体有一个'HasChanges‘标志,您可以在将更改提交到上下文之前对其进行测试。例如:
if (this.CurrentEntity.HasChanges || CurrentEntity.EntityState == EntityState.New)
{
this.SubjectContext.SubmitChanges(Submit_Completed, saveDetails);
}https://stackoverflow.com/questions/20349860
复制相似问题