Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在N层体系结构中通过wcf检测ObservableCollection中更改的poco实体?_C#_Wpf_Wcf_Entity Framework_N Tier Architecture - Fatal编程技术网

C# 如何在N层体系结构中通过wcf检测ObservableCollection中更改的poco实体?

C# 如何在N层体系结构中通过wcf检测ObservableCollection中更改的poco实体?,c#,wpf,wcf,entity-framework,n-tier-architecture,C#,Wpf,Wcf,Entity Framework,N Tier Architecture,我的应用程序中有以下几层 日期图层(参考模型) 业务层(对模型、数据的引用) 模型 服务(WCF)-(参考模型,业务层) UI(WPF/银灯)-通过WCF服务连接 如何在UI层的ObservableCollection中检测更改的poco实体? 用于从客户端将其发送回服务器进行保存?而不是将所有数据发送回服务器端(通过WCF) 或 如何在UI层中对集合中的实体执行添加/删除/更新操作 我正在使用 VS2010/2012 C# 环境足迹5 支持WCF的ADO.NET POCOEntityGener

我的应用程序中有以下几层 日期图层(参考模型) 业务层(对模型、数据的引用) 模型 服务(WCF)-(参考模型,业务层) UI(WPF/银灯)-通过WCF服务连接

如何在UI层的ObservableCollection中检测更改的poco实体? 用于从客户端将其发送回服务器进行保存?而不是将所有数据发送回服务器端(通过WCF)

如何在UI层中对集合中的实体执行添加/删除/更新操作

我正在使用 VS2010/2012 C# 环境足迹5 支持WCF的ADO.NET POCOEntityGenerator(用于从Model.edmx生成.tt模板) SQL Server 2012

尽管搜索了很多地方,我还是没有找到合适的解决办法。。 如果有任何想法,请帮助

谢谢

下面的链接给出了我创建应用程序所遵循的方法


如果您使用的是EF,那么您的实体有一个“HasChanges”标志,您可以在将更改提交到您的上下文之前对其进行测试。 e、 g


唯一正确的解决方案是手动进行更改跟踪。每个POCO对象将具有
IsDirty
属性,并且此对象的每个属性在其setter中具有
IsDirty=true

减少手工操作的一种方法是创建一个框架,它将创建包装类,这将为您实现这一点,但这需要大量的反射和代码生成。此外,它仍然需要将所有属性定义为虚拟属性


但通常,您希望避免生成需要这种跟踪的UI。要更改实体时,请在编辑窗口中仅加载该实体。

POCO非常适合在客户端和服务器之间传输数据。但是,如果您正在寻找在客户端和/或服务器端实际工作的对象,则可能需要考虑使用自跟踪实体(STE),因为这些实体包含逻辑来跟踪它们的实际更改和状态。p>
然而,更好的解决方案是使用N层实体框架,它提供了在N层应用程序中使用EF的功能。有关更多详细信息,请参阅。

MyServiceClient service=new MyServiceClient();ObservableCollection clMyCollection=新的ObservableCollection();clMyCollection=service.GetMyMethod(“参数”);我曾经将此集合绑定到devexpress gridcontrol,如(grdcntll.ItemSource=clMyCollection)。因此,如果我更改任何单元格或添加新行或删除行,我需要通过wcf服务将特定行发送回服务器。该怎么办?DataContext在UI层中不可用,因为它是通过wcf进行通信的。抱歉,我没有注意到您试图在UI层中管理实体。问题是为什么?将UI与代码分离无疑是一件好事。祝你好运找到答案。我需要我的应用程序。在WPF和Silver light以及SQL和Oracle中,我就是这样做的,Ephoric先生谈到了IsDirty属性,但我正在寻找如何实现它。。。如果你能帮忙。。。谢谢。他基本上说你必须自己(手动)管理变更跟踪。但如果您不制作必须跟踪实体状态的UI,它也会更容易!我也使用Silverlight,但使用MVVM。通过这种方式,我将通过绑定到实体的视图模型集合来设置ItemSource。这些实体可以在上下文中,并自动跟踪更改。请给出一小段代码,用于在UI层中显示更改值的save()函数。@Sadique这不是问题所在,是吗?保存只会选择IsDirty设置为true的内容,并将其发送到WCF进行保存。问题是确保更改POCO对象中的任何数据都会设置IsDirty。问题是确保更改POCO对象中的任何数据都会设置IsDirty!!。。。是的,你是对的。。!!但是我不知道如何将IsDirty与POCO对象集一起使用。。如果你提供任何示例应用程序,这将是一个很大的帮助…我已经访问了你提供的链接。。。但在使用N层实体框架模板时,我遇到了很多错误,工作不正常。除了链接中附加的文档外,没有其他详细信息。@Sadique:请在stackoverflow发布关于n层实体框架的问题或疑问,以获得支持。除了用户指南之外,还有一些示例应用程序可在codeplex下载。
if (this.CurrentEntity.HasChanges || CurrentEntity.EntityState == EntityState.New)
{
this.SubjectContext.SubmitChanges(Submit_Completed, saveDetails);
}