c# - ASP.NET MVC 项目层

标签 c# asp.net asp.net-mvc design-patterns domain-driven-design

我正在尝试理解一个好的设计项目的概念。

我正在使用 ASP.NET MVC,并且正在尝试创建一个分层(可插入)项目。

我现在拥有的当前项目结构是这样的:

  1. LayeredProject - 包含 Controller 的 MVC 项目

  2. LayeredProject.EntityFramework - 包含用于数据库的所有 POCO 类。 (我正在使用代码优先方法)

  3. LayeredProject.Model - 这应该包含项目中使用的所有业务对象。

说该项目是一个电子商务网站,我会这样构建它:

  • LayeredProject.EntityFramework项目我有与数据库表相对应的类。类别、产品、用户。该项目仅用于保存和加载数据库中的数据,这些对象不应用于其他目的。这个项目有引用LayeredProject.Model项目。

  • LayeredProject.Model我的项目存储了我使用的所有对象,其中大多数都是LayeredProject.EntityFramework的副本。 POCO 的对象和使用的一些其他服务类。

  • LayeredProject我保留所有 ViewModels 类、 Controller 和不同的 UI 逻辑。这个项目有引用LayeredProject.Model项目。

首先,我不确定这是否是正确的方法。

而且,如果这是正确的做法,那么我会有点困惑,因为我将在 EntityFramework 中有我的 POCO 类的副本。项目以及 Model项目。

请帮助我理解这一点

最佳答案

您可以使用分层结构以及使用 MVC 来设计您的项目。 Controller 和 View 部分应保持完整。您可以根据需要将业务逻辑部分划分为任意层。该模型应该是您期望的层数的结果。为此,请将您的业务逻辑保留在单独的项目中(不是必需的:它可以位于 Web 项目本身中),将该项目中的 dll 引用到 MVC Web 解决方案。将数据库查询生成的模型传递给 Web 解决方案,并在 Controller 的帮助下渲染 View 。(我已经使用这种风格完成了我的项目)

关于c# - ASP.NET MVC 项目层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12768763/

相关文章:

c# - 如何使用C#和Quickbook SDK在QuickBook中添加发票?

c# - Form.ShowDialog(IWin32Window) 是否应该与任何窗口句柄一起使用?

javascript event.target 在 mozilla 中不工作

c# - ASP.NET MVC : Verify that editing record is allowed (ownership)

asp.net-mvc - 在 ASP.NET MVC 中返回 404 时创建自定义错误

c# - HttpListener : The requested address is not valid in this context

c# - 如何在C#中使用SetWindowLong?

asp.net - 使用路由或其他方法强制使用 http 或 https?

asp.net - 从asp.net(客户端)中的ID获取控件完整的ClientID

javascript - ASP MVC 4 客户端验证在 IE 中不起作用(在 Chrome 中起作用)