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

有帮助吗?

解决方案

我执行以下操作:

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

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

缺点:您将失去实体框架的一些跟踪功能,您必须手动加载数据对象(ef 对象),如果需要手动进行乐观并发检查(例如通过业务对象上的时间戳)。

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

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

其他提示

除了“温多城堡”之外,我几乎喜欢这个。看看 openticket.codeplex.com

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top