【发布时间】:2012-10-07 12:20:32
【问题描述】:
我正在努力理解一个好的设计项目的概念。
我正在使用 ASP.NET MVC,我正在尝试创建一个分层(可插入)项目。
我现在的项目结构是这样的:
LayeredProject- 包含控制器的 MVC 项目LayeredProject.EntityFramework- 包含用于数据库的所有 POCO 类。 (我正在使用 Code First 方法)LayeredProject.Model- 这应该包含项目中使用的所有业务对象。
说这个项目是一个电子商务网站,我会这样组织它:
在
LayeredProject.EntityFramework项目中,我有对应于数据库表的类。类别、产品、用户。该项目仅用于保存和加载数据库中的数据,这些对象不应用于其他目的。该项目引用了LayeredProject.Model项目。在
LayeredProject.Model项目中,我存储了我使用的所有对象,其中大部分都是LayeredProject.EntityFrameworkPOCO 的对象和使用的其他一些服务类的副本。在
LayeredProject中,我保留了我所有的 ViewModel 类、控制器和不同的 UI 逻辑。该项目引用了LayeredProject.Model项目。
首先,我不确定这样做是否正确。
而且,这是正确的做法,然后我会有点困惑,因为我将在 EntityFramework 项目和 Model 项目中复制我的 POCO 类。
请帮助我理解这一点
【问题讨论】:
-
我认为没有理由在模型项目中创建 EF 对象的克隆。您可以将逻辑添加到 EF 类。如果您希望这些对象保持干净,只需在代码中进行映射,而不是使用属性。
-
好的,如果我可以将逻辑添加到 EF 类并直接使用它们,那么它们应该移入 Model 项目,对吗?另外,我认为 POCO 类应该是空的,没有继承的方法和接口,但我认为我错了。但是,EF 支持我的 POCO 的对象,但是如果我想切换到不同的 ADO,比如 Linq to Sql,那么我必须将 linq to sql 类映射到我的 POCO 的类,对吗?
标签: c# asp.net asp.net-mvc design-patterns domain-driven-design