多层应用程序中的实体框架

时间:2011-07-10 12:30:54

标签: entity-framework-4 n-tier-architecture

我试图在设置中使用EF4.1,我将拥有DAL(数据访问层),BLL(业务逻辑层),然后是表示层(通常是ASP.NET Web应用程序或控制台应用程序)。< / p>

目前我使用LINQ to SQL完成所有项目,并使用如上所述的多层设置。

在查看EF时虽然所有示例似乎只使用了1层或2层,但很难找到使用DAL和BLL的完整示例。

我最接近我想要的是使用POCO代码生成器来创建POCO类,然后将这些类重新定位到我的BLL项目中 - 并且.edmx和对象上下文保留在DAL。

这个问题虽然是DAL需要对BLL的引用,以便它知道POCO类 - 理想情况下,引用将是相反的。如果DAL引用了BLL,我也无法从BLL到DAL的引用 - 因为你不能有循环引用,所以我不能对对象上下文做任何事情,比如从bll调用save changes方法。

无论如何,我对这一切都有点混乱。

我正在考虑以不同的方式处理事务(类似于我目前使用LINQ to SQL执行的操作),其中EF实体对象保留在DAL中,我编写自己的BLL类,只需“捎带”到他们的DAL上对象计数器部件。这样,DAL可以引用BLL和BLL。

很抱歉这是一个很长的问题,但感谢大家的想法,我真的花了几个小时阅读有关EF的内容,但很难看到它如何在多层方法中发挥作用。

1 个答案:

答案 0 :(得分:1)

几个月前我问过同样的问题。

我发现了微软关于分层的白皮书,我记得在某些情况下他们认为EF是BLL + DAL组件。

就我而言,这是我到目前为止所做的事情:

  • 我只创建两层:演示文稿(ASP.Net)+业务层(包含EF类,EDMX和DB上下文)
  • 我在Presentation层中管理数据库上下文(通过我的EF对象生命周期中的Sessions或HttpRequests进行更多控制)

事实上,我合并了BLL + DAL。但我必须承认,我没有涉及非常复杂的业务流程的项目。 从严格的架构角度来看,我知道它并不完美,但它适用于我必须处理的项目。

我第一次创造了3层,但是当你不得不经常创建'哑'类来映射DAL和演示文稿时,它会变成一场噩梦。

取决于您的数据和业务模式的复杂性,我猜...