c# - ASP.NET MVC 实体、DTO、业务对象、ViewModels?我该如何管理?

标签 c# asp.net-mvc entity-framework architecture

我正忙于新 MVC 应用程序的架构,但我对如何管理不同类型的对象感到非常困惑。混淆是关于实体、业务对象和 View 模型之间的关系。 我将用一个例子来描述我的困惑:

我已经使用不同的项目设置了我的 Web 应用程序:MVC 前端、BLL、DAL、通用事物等。

假设我有一个包含自行车列表的 View 。我想显示自行车的详细信息,例如颜色、尺寸、制造商。但在我的数据库中,Bike 和 Manufacturer 是两个不同的表,因此在我的 Entity Framework 上下文中,它们也是两个不同的类。

所以我有自行车和制造商这两个实体。但在我的业务需求中,我认为它们需要是一个单一的对象,我可以在业务逻辑中操作或使用它。然后是我的 View ,它需要一个 (View)Model。这也应该是具有来自不同表的属性的组合 ViewModel。

我该如何处理?我是否需要从我的 DAL 中获取 Bike 和 Manufacturer 对象,并在我的 BLL 中从中创建一个业务对象,在完成一些业务逻辑之后,我是否应该在我的 Controller 中从中创建一个 ViewModel?或者我的 DAL 是否需要返回组合的业务对象?或者我可以将实体对象用作业务类吗?或者我也可以将我的业务对象用作 ViewModel 吗?

我希望我的问题很清楚,并且任何人都可以给我一个很好的建议,告诉我需要哪个对象,以及如何、在何处和何时创建不同类型的对象,以及这些类应该放在哪一层...

最佳答案

您的问题的答案很简单。您的不同模型层之间没有NO 关系。它们是完全隔离的,并且不相互引用。一点也不。因此,没有什么可混淆的。

您在层的不同部分中有代码映射两个层 UI-> 业务和业务-> 数据,但这应该是它们之间任何交互的范围。

关于c# - ASP.NET MVC 实体、DTO、业务对象、ViewModels?我该如何管理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23903935/

相关文章:

c# - 如何在使用 Asp.Net Identity 2 将用户添加到角色后使 .AspNet.ApplicationCookie 失效?

c# - 创建 Controller 基类(部分)

asp.net-mvc - 如何在ASP.NET MVC网站的URL中存储有用的值并使其传播?

asp.net - 为什么Request.QueryString ["ReturnUrl"]即使在URL中也返回NULL呢?

c# - 在 EF6 中使用枚举作为 FK

c# - 如何在 Entity Framework 的同一查询中使用包含和匿名类型?

asp.net-mvc - LINQ 与 EF 导航属性连接

c# - VersionOne API 客户端的附件

c# - 与 Contract.Requires<T> 相比抛出异常?

c# - 如何使用 EF6 获取 Controller 中任何属性的 [Display(Name ="")] 属性中的值