2

如何使用 LinqToEntities 实现存储库模式 如何实现接口

4

2 回答 2

1

我执行以下操作:

服务层包含我的业务对象。它通过控制反转传递到存储库(Castle Windor 是我通常的选择)。存储库负责业务对象和我的实体框架对象之间的映射。

优点:您对对象状态或 EF 对象的上下文没有任何问题,因为您只是在存储库端的数据操作期间加载它们。这在将它们传递给 WCF/Web 服务时缓解了这种情况。

缺点:您正在失去 Entity Framework 的一些跟踪功能,您必须手动加载数据对象(ef 对象),如果需要手动进行乐观并发检查(例如通过业务对象上的时间戳),则可能需要这样做。

但通常我更喜欢这种解决方案,因为以后可以更改存储库。它允许我拥有不同的存储库(例如,我的用户对象实际上使用的是 ASPNetAuthenticationRepository 而不是 EntityFrameworkRepository),但对于我的服务层来说它是透明的。

关于接口,我会使用服务层中的业务对象作为参数对象,不要让那些 EF 对象离开存储库层。希望有帮助

于 2008-09-11T11:44:13.007 回答
1

除了“Castle Windor”之外,我几乎喜欢这个。看看 openticket.codeplex.com

于 2009-03-17T09:22:46.920 回答