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

时间:2020-03-05 18:50:46  来源:igfitidea点击:

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

解决方案

回答

我执行以下操作:

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

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

缺点:我们将失去Entity Framework的某些跟踪功能,必须手动加载数据对象(ef对象),可能需要手动进行乐观并发检查(例如,通过业务对象的时间戳)。

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

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

回答

除"城堡之王"外,艾弗几乎像这样。
看看openticket.codeplex.com