如何使用Linq To Entities实现存储库模式?

时间:2008-09-10 14:31:00

标签: .net .net-3.5 linq-to-entities

如何使用LinqToEntities实现存储库模式 如何实现界面

2 个答案:

答案 0 :(得分:1)

我执行以下操作:

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

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

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

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

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

答案 1 :(得分:1)

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