如果Entity Framework/DbContext是DAL/Repository,它在哪里适合3层架构?

Amb*_*ite 5 .net c# asp.net asp.net-mvc entity-framework

我一直在阅读StackOverflow和其他网站关于最佳架构实践的文章,并且存在许多相互矛盾的想法和观点.

我最终确定了一种方法,但我很难确定放置EF对象的位置(DbContext,Fluent API,种子数据等).这是我目前拥有的:

ASP.NET MVC项目:实际的Web项目.包含标准视图,控制器和视图模型(在Models文件夹中).

域模型项目:包含定义数据库(域)对象的所有POCO类.目前,没有提及或引用任何EF对象.

服务层项目:包含每种类型的域对象的服务对象(例如,IProductService,IOrderService等).每个服务都引用像DbSets这样的EF对象并处理业务规则 - 例如,添加产品,获取产品,将产品附加到订单等.

所以问题是,在这个配置中,EF类会去哪里?最初我想在服​​务层,但这似乎没有意义.然后我想把它们放在域模型层中,但是它将域模型绑定到EF,它本质上是一个DAL/Repository.最后,我考虑为EF创建一个单独的DAL项目,但考虑到它可能有3-4个文件(DbContext和一些其他小文件),这似乎是一个巨大的浪费.

有人可以提供任何指导吗?

Sun*_*nny 3

不需要域模型,因为它将是冗余的。EF 类可以直接充当域模型,并且在发送到视图时将其转换为视图模型。EF可以分为不同的类库。他们中的大多数人都使用存储库模式以及任何 ORM,这样如果他们需要替换就很容易了。但我看到了对使用存储库模式的批评,请检查一下。