Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何使用LinqToEntities实现存储库模式?_.net_.net 3.5_Linq To Entities - Fatal编程技术网

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

.net 如何使用LinqToEntities实现存储库模式?,.net,.net-3.5,linq-to-entities,.net,.net 3.5,Linq To Entities,如何使用LinqToEntities实现存储库模式 如何实现接口我执行以下操作: 服务层包含我的业务对象。它通过控制反转传递到存储库(我通常选择Castle Windor)。存储库负责业务对象和我的实体框架对象之间的映射 优点:您在对象状态或EF对象的上下文方面没有问题,因为您只是在存储库端的数据操作期间加载它们。这使得将它们传递给WCF/Web服务时的情况变得简单 缺点:您将失去Entity Framework的一些跟踪功能,您必须手动加载数据对象(ef对象),如果需要手动进行乐观并发检查(例

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

我执行以下操作:

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

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

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

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

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

除了“温德尔城堡”之类的东西,我几乎都喜欢这个。 看看openticket.codeplex.com