具有Entity Framework 4.0的基本/简单数据访问对象(DAO)

时间:2010-08-03 15:22:25

标签: c# entity-framework entity-framework-4 data-access-layer

我正在尝试在数据层中使用EF4为一个n层应用程序组合一个简单的POC。我在Web上查看了很多示例,使用DAO或Repository作为ORM的包装器似乎是一种常见的做法。我的理解是,两者之间的主要区别在于存储库更通用,并且例如对于参数需要IQueryable。我希望(为了更好)在这一点上坚持使用更简单的DAO对象,这些对象将包含相当具体的方法,例如GetPersonByFirstName(字符串名称),类似于之前基于ADO.NET的东西。也就是说,我仍然需要为我的DAO提供几个“交叉”功能。

  1. 如何在DAO之间共享上下文?优选地,这将是实例化DAO的业务对象不具有EF知识的方式。最初我认为BO会将会话传递给DAO,但这违反了我对BO独立于EF的要求(除非我没有想到什么)。也许某种Singleton / Factory方法?
  2. 使用请求上下文是否有更优雅的方法来处理ASP.NET应用程序?基本上是每个请求的会话类型设置,但不必修改任何表示层代码。
  3. 我想我可能有一个基类DAO,其中包含非常基本的CRUD方法,这些方法将在所有DAO中共享,但同样不能达到IQueryable。
  4. 我想在我的业务对象中使用TransactionScope包装我的DAO(我不认为这是一个问题)。
  5. 谢谢!

1 个答案:

答案 0 :(得分:0)

在做了一些更多的研究之后,我似乎正在将实体框架上下文存储在httpContext.Items中。有很多解决方案可以基本上创建一个工厂来管理EF上下文的生命周期。我的解决方案的主要问题是我的库不能用于非Web项目,所以我认为我需要沿着使用IoC容器(而不是工厂)的路径为我注入上下文的生命周期对象每个请求。这样,如果我需要在控制台应用程序中使用我的库,例如我可以将配置更改为类似于每个线程的对象等。