[英]If Entity Framework / DbContext is the DAL / Repository, where does it fit within 3-tier architecture?
我一直在阅读关于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和一些其他小文件),这似乎是一个巨大的浪费。
有人可以提供任何指导吗?
不需要域模型,因为它将是冗余。 EF类直接可以充当域模型,并在将其发送到View时将它们转换为View Models。 EF可以分成不同的类库。 他们中的大多数都使用存储库模式以及任何ORM,如果他们要替换它们会很容易。 但我已经看到了使用存储库模式,请批评这一出。
这是我做的:
数据:
实体:
服务:
商业:
客户端(桌面/ Web / Wpf /等)。
我不是说这是最好的方法,我只是分享一直在为我工作的东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.