我试图在设置为DAL(数据访问层),BLL(业务逻辑层),然后是表示层(通常是ASP.NET Web应用程序或控制台应用程序)的环境中使用EF4.1。
目前,我使用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类,将其“pi带”到其DAL对象计数器部分。这样,DAL可以引用BLL和BLL。
很抱歉,这是一个漫长的问题,但是感谢人们的想法,我确实花了数小时来阅读有关EF的信息,但是却很难看清它如何以多层的方式工作。
最佳答案
好吧,几个月前我问过自己同样的问题。
我从Microsoft找到了一份有关分层的白皮书,我还记得他们在某些情况下将EF视为BLL + DAL组件。
就我而言,这是到目前为止我一直在做的事情:
实际上,我合并了BLL + DAL。但是我必须承认我没有参与具有非常复杂的业务流程的项目。
从严格的体系结构角度来看,我知道这并不完美,但对于我必须处理的项目来说,它确实很不错。
第一次,我创建了3层,但是当您不得不不断创建“哑”类以映射DAL和Presentation时,这是一个噩梦。
我猜取决于您的数据和业务模型的复杂性。
关于entity-framework-4 - 多层应用程序中的 Entity Framework ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6641111/