C# 使用EF6时对图层感到困惑

C# 使用EF6时对图层感到困惑,c#,vb.net,entity-framework,data-access-layer,business-logic-layer,C#,Vb.net,Entity Framework,Data Access Layer,Business Logic Layer,我是EntityFramework6的新手,但希望在下一版本的软件中使用它 在我当前的项目中,我使用Csla,它将DAL和BusinessLayer封装到一个项目中 EF是否与Csla一样,在1个项目中创建DAL和业务层?所有在线教程都使用代码优先的方法,并将这些对象直接绑定到MVC网页 如果我使用数据库优先的方法,这会使事情有所不同吗?这是否只会创建DAL对象,我是否必须编写这些对象的业务层版本 我在网上读到,人们将模型移动到一个单独的项目中,因此可以在层之间传递这些对象。如果这样做,DAL或

我是EntityFramework6的新手,但希望在下一版本的软件中使用它

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

EF是否与Csla一样,在1个项目中创建DAL和业务层?所有在线教程都使用代码优先的方法,并将这些对象直接绑定到MVC网页

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

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


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

我不知道Csla是什么。我不知道你所说的“EF是否与Csla一样,在1个项目中创建DAL和业务层?”是什么意思

在将项目划分为多个层方面,这是一个好主意

使用数据库优先的方法不会改变任何事情,事实上,不使用EF也不会改变任何事情。因为您应该使用
存储库
模式:

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

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


在业务层中,您拥有业务逻辑。为什么您认为如果将模型放在自己的项目中,业务层会遇到问题?

那么modela真的像DTO吗?在层之间传递数据的方法?如果使用ef生成ur模型,dal层中的voea是什么?仅dbcontext对象(首先使用代码)?是的,模型用于传递应用程序/服务的核心数据。如果使用repository模式,repository类将成为DAL。否则,DbContext就是DAL。使用EF时是否需要存储库模式?一直在网上阅读,有些人说是这样,有些人说dbcontext是存储库。您的看法是什么?使用存储库模式几乎总是更好的。尤其对于单元测试,不能使用DbContext。此外,如果您使用依赖项注入(IoC),那么使用存储库模式也更好。如果有一天您决定停止使用实体框架,并用其他库/ORM/纯SQL替换它,那么如果您想避免大量代码重构,就需要存储库模式。