【问题标题】:Entity Framework 4 + Silverlight persisting entity graphsEntity Framework 4 + Silverlight 持久化实体图
【发布时间】:2011-02-10 08:48:25
【问题描述】:

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

【问题讨论】:

    标签: silverlight entity-framework-4 persistence


    【解决方案1】:

    您实际上是在基本 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 客户端公开的服务。

    【讨论】:

    • 感谢您周到的回答!
    • 当使用自我跟踪实体时,我必须直接公开这些实体类,从而紧密耦合我的层......
    • @Malkier:是的,这是 STE 的缺点,也是 STE 不能用于 .NET 客户端的原因。
    猜你喜欢
    • 1970-01-01
    • 2016-02-27
    • 2016-10-10
    • 1970-01-01
    • 2023-03-11
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多