编程语言
首页 > 编程语言> > C#-EF6和分层体系结构

C#-EF6和分层体系结构

作者:互联网

我知道这个问题一次又一次地回来,我读了很多,但是我找不到我的问题的答案.
我在asp.net mvc上没有很多经验,但是我已经使用ef,repository和uow模式进行了一个项目.
在上一个项目中,我有几个层次,包括:

> Web(项目MVC)
> BLL(我的业务层)
> DAL(数据访问,具有ef上下文,存储库和uow实现)

现在,我想使用EF6开始一个新项目.我读到不需要,我想试试看.
到目前为止,我知道您必须将dbContext传递给服务,并将服务传递给控制器​​,对吗?
因此,您还必须在服务层中引用EntityFramework吗?还正确吗?
而且由于身份的实现,您也需要在UI中引用entityFramework.
那么,分层又有什么意义呢?
如果我读到这个microsoft guide,我要做的就是在DAL和其他图层上创建一个文件夹?对我来说似乎不对……但是也许?

我也读了post,似乎也证实了我的观点.如果您添加统一性并在您的用户界面中对其进行配置,则它在您的用户界面中只是一个参考:)

所以我的问题是,如果您现在必须使用EF6,asp.net MVC5开始一个新项目,该怎么办?
我想做分层吗?还是只继续我的MVC项目?

我想念的一件事是一个图托,他解释了如何逐步启动Microsoft MVC 5模板,并通过层,去耦标识以及最终在我的UI中没有ef ref对其进行转换.这东西存在吗?

解决方法:

这里没有银弹.有些人以一种方式这样做,而另一些则是.取决于所需的抽象级别.我曾经有3个项目:

>网页
>核心/业务(服务)
>模型/ EF /域(实体框架上下文和模型)

如果Web引用了Domain或EntityFramework,那就很好. Web可以返回EF模型(只是为了避免代码重复).如果需要更复杂的模型,则可以创建ViewModel.

我不建议使用UoW或存储库模式(除非您真的需要它). EF上下文已经是UoW模式的实现.如果您想使用Entity Framework实施存储库模式,请不要在界面中公开任何与EF相关的内容,例如SaveChanges(),Dispose(),因为在这种情况下,您将不会利用存储库模式的好处.

因此,这就是我构建典型的中小型ASP.NET MVC EF网站的方式.但是就像我说的,一切都取决于所需的抽象级别.抽象级别与编写所需的代码量成正比.因此,请首先考虑并保持简单.祝好运.

标签:asp-net-mvc-5,c,net,asp-net-mvc,entity-framework
来源: https://codeday.me/bug/20191119/2036899.html