1

所以我正在阅读关于实体框架,并基于我的敏捷开发场景,我决定去与POCO对象。什么是最好的POCO状态跟踪策略? (EF)

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

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

所以我的问题是什么是真正知道什么状态改变它的最好方法。我在Julia Lerman的书中看到她在她的POCO对象中使用State属性,并且在将对象发送到服务器之前负责管理客户端的状态。然后,该状态将用于更改连接后的实体EntitySate。

我还看到其他样本,其中插入实现检查实体(对象)的密钥以知道它是否是新建的。例如,如果我的Project实体中的ProjectId是0(零),我知道它必须是一个新对象。

说实话我不喜欢任何这些方法,因为在这两种情况下,我的开发人员必须做一些额外的工作才能真正保存对象。

我想知道这两种解决方案的优点和缺点,希望有一个新的(更好的)解决方案,我还没有选择。

+0

你看过自我追踪的实体吗? – RPM1984 2010-11-16 10:09:04

+0

是的,但我需要使用POCO :( – sebagomez 2010-11-16 15:19:50

回答

0

您仍然可以拥有自我跟踪实体和poco。在Visual Studio中,如果您搜索社区模板,则会自动跟踪poco模板。这是你想要使用的。如果你可以使用Ientitywithobjecttracker找到你的实体的模板。

http://msdn.microsoft.com/en-us/library/dd456848.aspx

+0

我知道我可以...但我们正在做敏捷开发与unitesting,我们希望与POCO一起去,普通POCO – sebagomez 2010-11-18 12:37:58

+0

自我跟踪实体是POCO,它们并不排除任何单元测试或敏捷实践如果您制作了一个无法更改的模型,那么您唯一的选择就是自己管理更改跟踪。您已经说过,您不希望开发人员必须编写跟踪代码我个人会回过头来看看如何通过STE POCO模板重新生成模型,另一种类型的跟踪是通过EF代理进行的,但是当您使用RIA服务时,您不想沿着这条路线走下去,连续播放时,播放效果特别好(根据Julie Lerman的说法)。 – 2010-11-20 10:00:24