entity framework的存储库+ UnitOfWork模式

我上下搜索网络,我没有找到适合我的应用程序的设计。
我正在寻找Repository + UnitOfWork模式,它将管理连接并在完成后自动处理它们。

我需要支持Web应用程序,其中每个请求都有自己的UnitOfWork和Windows应用程序,其中每个线程都有自己的UnitOfWork。 我需要模式自动处理UnitOfWork请求/线程完成。 我也想在exception的情况下支持rolback。

现在我使用StructureMap所以我不想继续在建议答案中使用它。

我需要Repository模式的原因是为了实现我所有实体所需的所有能力。 我需要UnitOfWork的原因是允许更多的实体更改。

我真的很乐意帮助你。

谢谢。

我用这个博客作为一个非常好的起点:

http://www.primaryobjects.com/CMS/Article122.aspx

它从非常开始,并在最后为您提供源代码。 它也使用StructureMap,因此您可能对此有些熟悉。

我会推荐NCommon框架。 你可以在这里找到一个关于它的博客: http : //www.codeinsanity.com/

我去年写了一篇关于编写支持LINQ的存储库的文章,这些存储库可以很容易地伪造成unit testing,并且可以很好地处理dependency injection。 这是文章 。 简而言之,本文描述了一个模拟LINQ to SQL DataContext的工作单元,并包装了一个抽象实际O / RM工具的IDataMapper接口。 工作单元包含Repository类型的属性,例如RepositoryRepository ,并且存储库类实现IQueryable ,它允许您对其进行LINQ。

IDataMapper是一个简单的界面,如下所示:

 public interface IDataMapper : IDisposable { Repository GetRepository() where T : class; void Save(); } 

本文中描述的解决方案旨在对unit testing友好且DI友好。 实际上,您需要的唯一配置如下:

 string northwindConnection = GetConStr("Northwind"); container.RegisterSingle>( new LinqToSqlNorthwindUnitOfWorkFactory(northwindConnection)); container.RegisterSingle>( new EntityFrameworkSalesUnitOfWorkFactory()); 

如果您已经拥有工作单元和存储库,并且您正在使用StructureMap,那么问题出在哪里?

您可以简单地将类配置为:

 ObjectFactory.Configure(x => x.For() .HybridHttpOrThreadLocalScoped() .Use()); 

您可以使用dependency injection将工作单元传递给存储库。