如何使用LinqToEntities实现存储库模式 如何实现界面
答案 0 :(得分:1)
我执行以下操作:
服务层包含我的业务对象。它通过控制反转传递到存储库(Castle Windor是我通常的选择)。存储库负责业务对象和我的实体框架对象之间的映射。
优点:对象状态或EF对象的上下文没有问题,因为您只是在存储库端的数据操作期间加载它们。这可以简化将它们传递给WCF / Web服务的情况。
缺点:您正在丢失Entity Framework的一些跟踪功能,您必须手动加载数据对象(ef对象),可能需要手动加载到乐观并发检查(例如,通过业务对象的时间戳) 。
但通常我更喜欢这个解决方案,因为以后可以更改存储库。它允许我拥有不同的存储库(例如我的用户对象实际上使用的是ASPNetAuthenticationRepository而不是EntityFrameworkRepository),但对于我的服务层,它是透明的。
关于接口,我将使用服务层中的业务对象作为参数对象,并且不要让这些EF对象离开存储库层。 希望有所帮助
答案 1 :(得分:1)