实体框架4 + Silverlight持久化实体图

时间:2011-02-10 08:48:25

标签: silverlight entity-framework-4 persistence

我们目前正在使用Silverlight 4(使用PRISM)和实体框架4构建我们的第一个大型应用程序。现在我有一个关于持久化视图模型数据的一般性问题。 假设我有域对象转换为具有多个关联的EF4实体(实体具有集合,再次具有集合等)。在用户操作期间/之后保留这些图表的最佳方法是什么?编写更多粒度存储库方法(如“AddEntityToParent”和“RemoveEntityFromParent”)或者从视图中获取所有数据并将其推送到“SaveLargeParentEntity”方法会更好吗? 我可以在Silverlight中“缓存”子对象的视图模型项,然后将其全部下载到EF4,还是必须对用户界面中更改的每个项进行粒度更新?有什么好建议吗?我希望我的问题很清楚。谢谢。

1 个答案:

答案 0 :(得分:2)

您实际上是在基本CRUD操作和使用对象图之间做出选择。我会选择第二种方法,因为CRUD operations over web service can be very chatty.

使用对象图发送Web服务时,您必须处理分离行为。更新关系时,分离的实体+对象图couses some troubles。最好的方法通常是在更新之前加载整个图形(获取附加实体)并将接收到的图形合并到附加图形中 - 它将正确地跟踪您的更改。

但是因为您使用的是有状态的Silverlight,您还可以考虑使用自我跟踪实体(STE)。 STE可以在从EF ObjectContext分离后跟踪更改。因此,您可以将包含STE的对象图从Web服务返回到Silverlight应用程序,对STE进行一些更改并将相同的对象图发送回Web服务。来自STEs的Applying changes将为您处理大量工作。请注意STEs are not the best solution表示应该向一般Web应用程序或非.NET客户端公开的服务。