Entity framework 什么';最佳POCO状态跟踪策略是什么?(EF)

Entity framework 什么';最佳POCO状态跟踪策略是什么?(EF),entity-framework,entity-framework-4,poco,wcf-ria-services,Entity Framework,Entity Framework 4,Poco,Wcf Ria Services,所以我在阅读有关实体框架的文章,根据我的敏捷开发场景,我决定使用POCO对象 但现在我有一些额外的问题,我不知道如何摆脱 我正在使用RIA服务和Silverlight,因此当我要保存服务器端的对象时,我必须将该对象附加到ObjectContext。问题是我必须将ObjectState更改为Added或Modified 所以我的问题是,要真正知道将其更改为什么状态,最好的方法是什么。我在她的书中看到,她在POCO对象中使用了一个State属性,在将对象发送到服务器之前,她会在客户端管理该状态。该状

所以我在阅读有关实体框架的文章,根据我的敏捷开发场景,我决定使用POCO对象

但现在我有一些额外的问题,我不知道如何摆脱

我正在使用RIA服务和Silverlight,因此当我要保存服务器端的对象时,我必须将该对象附加到
ObjectContext
。问题是我必须将
ObjectState
更改为Added或Modified

所以我的问题是,要真正知道将其更改为什么状态,最好的方法是什么。我在她的书中看到,她在POCO对象中使用了一个
State
属性,在将对象发送到服务器之前,她会在客户端管理该状态。该状态用于更改连接后的真实实体状态

我还看到了其他示例,其中Insert实现检查实体(对象)的键,以确定它是否是新的。例如,如果我的项目实体中的
ProjectId
为0(零),我知道它必须是一个新对象

老实说,我不喜欢这些方法中的任何一种,因为在这两种情况下,我的开发人员都必须做一些额外的工作来实际保存对象


我想知道这两种解决方案的优缺点,并希望找到一种新的(更好的)解决方案。您仍然可以拥有自跟踪实体和poco。在VisualStudio中,如果搜索社区模板,则会有一个自跟踪poco模板。这就是你想要使用的。如果可以找到模板,请使用Ientitywithobjecttracker查找实体


您看过自跟踪实体吗?看过,但我需要使用POCO:(我知道我可以……但我们正在使用UnitTesting进行敏捷开发,我们决定使用POCO,普通的POCO自我跟踪实体就是POCO。它们不排除任何单元测试或敏捷实践。如果你已经生成了一个无法更改的模型,那么你唯一的选择就是自己管理更改跟踪。你说过你不想更改它开发人员必须编写跟踪代码,所以我个人会回去看看如何根据STE POCO模板重新生成模型。另一种类型的跟踪是通过EF代理进行的,但当您使用RIA服务时,您不想走这条路,因为代理在序列化时发挥得不是特别好(Julie Lerman说)。