【发布时间】:2013-05-27 23:44:06
【问题描述】:
我整天都在阅读 StackOverflow 和其他网站上关于最佳架构实践的文章,但其中有很多相互矛盾的想法和意见。
我终于确定了一种方法,但我很难决定在哪里放置 EF 对象(DbContext、Fluent API、播种数据等)。这是我目前拥有的:
ASP.NET MVC 项目:实际的 Web 项目。包含标准视图、控制器和视图模型(在 Models 文件夹中)。
域模型项目:包含定义数据库(域)对象的所有 POCO 类。目前,未提及或引用任何 EF 对象。
服务层项目:包含每种类型的域对象(例如,IProductService、IOrderService 等)的服务对象。每个服务都引用 DbSet 等 EF 对象并处理业务规则 - 例如,添加产品、获取产品、将产品附加到订单等。
所以问题是,在这个配置中,EF 类去哪里了?最初我认为是在服务层,但这似乎没有意义。然后我想将它们放在域模型层中,但随后它将域模型与 EF 联系起来,EF 本质上是一个 DAL / 存储库。最后,我考虑为 EF 创建一个单独的 DAL 项目,但考虑到其中可能包含 3-4 个文件(DbContext 和其他一些小文件),这似乎是一种巨大的浪费。
任何人都可以提供任何指导吗?
【问题讨论】:
-
是什么驱使您创建三个项目,而不是一个?
-
更好的可扩展性。使用一个单独的域模型项目和一个服务项目,您可以拥有另一个应用程序(例如,WinForms 应用程序),该应用程序可以轻松使用域和业务逻辑,而无需复制代码。此外,如果有 WinForms 应用和 MVC 应用,则只需在一处而不是两处进行业务规则更改等操作。
标签: c# asp.net .net asp.net-mvc entity-framework