如何使用 LinqToEntities 实现存储库模式?
-
09-06-2019 - |
题
如何使用linqtoentities实现存储库模式如何实现接口
解决方案
我执行以下操作:
服务层包含我的业务对象。它通过控制反转传递到存储库(Castle Windor 是我通常的选择)。存储库负责业务对象和我的实体框架对象之间的映射。
优点:您对 EF 对象的对象状态或上下文没有任何问题,因为您只是在存储库端的数据操作期间加载它们。这可以缓解将它们传递到 WCF/Web 服务时的情况。
缺点:您将失去实体框架的一些跟踪功能,您必须手动加载数据对象(ef 对象),如果需要手动进行乐观并发检查(例如通过业务对象上的时间戳)。
但通常我更喜欢这个解决方案,因为以后可以更改存储库。它允许我拥有不同的存储库(例如,我的用户对象实际上使用 ASPNetAuthenticationRepository 而不是 EntityFrameworkRepository),但对于我的服务层来说它是透明的。
关于接口,我将使用服务层中的业务对象作为参数对象,并且不要让这些 EF 对象脱离存储库层。希望有帮助
其他提示
除了“温多城堡”之外,我几乎喜欢这个。看看 openticket.codeplex.com
不隶属于 StackOverflow