2008-09-10 72 views

回答

1

我做了以下内容:

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

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

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

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

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

1

我几乎是这样,除了“城堡温莎”的东西。 看看openticket.codeplex.com