使用EF6时对图层感到困惑

时间:2014-09-10 05:19:52

标签: c# vb.net entity-framework data-access-layer business-logic-layer

我是Entity Framework 6的新手,但我想将它用于我们软件的下一个版本。

在我目前的项目中,我使用Csla,它将DAL和BusinessLayer包装到一个项目中。

EF是否与Csla相同并在1个项目中创建DAL和业务层?所有在线教程都使用Code First方法,并将这些对象直接绑定到MVC网页。

如果我使用数据库优先方法,这会使事情有所不同吗?这会仅创建DAL对象吗?我是否必须编写这些对象的业务层版本?

我在网上看到人们将模型移动到一个单独的项目中,因此您可以在图层之间传递这些对象。如果你这样做,你会在DAL或BusinessLayer中拥有什么?

我将提到我们使用SQLServer作为我们的数据库。我不认为这会改变,但永远不会说永远不会。

1 个答案:

答案 0 :(得分:0)

我不知道Csla是什么。我不知道你的意思" EF和Csla一样,在1个项目中创建DAL和业务层吗?"。

在将项目分成层次方面,这是一个好主意。

使数据库第一种方法不应该改变任何东西,事实上不使用EF也不应该改变任何东西。因为您应该使用Repository模式:http://www.asp.net/mvc/tutorials/getting-started-with-ef-5-using-mvc-4/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application

将模型POCO移动到一个单独的项目中也是一个好主意。为什么?考虑您为同一服务有不同的项目:1)ASP.NET Web应用程序,2)ASP.NET WebAPI,3)WCF服务。当所有模型都依赖于相同的模型时,您的模型应该是一个单独的项目。做好最坏的准备,你永远不会后悔。

因此,如果您使用存储库模式,您的DAL就是实现存储库模式的项目。

在业务层中,您拥有业务逻辑。如果将模型放入他们自己的项目中,为什么你认为它对业务层来说是一个问题?