查看模型在 N 层中的位置 ASP .NET MVC 应用程序
View Model place in N Tier ASP .NET MVC application
我已阅读 并且对此感到疑惑。
我的应用程序包含 4 个层
- Web 项目/UI
- BLL
- DAL(包含 EF)
- 实体层
我现在已经将 VM 放在 UI 层中,它是不同 类 的组合。像这样
public class CompanyVMIndex
{
public CompanyVM Company { get; set; }
public BillingAddressVM BillingAddress { get; set; }
public List<ShippingAddressVM> ShippingAddress { get; set; }
public List<CompanyContactVM> CompanyContact { get; set; }
}
我现在很困惑如何将这些数据从 UI 发送到 BLL,然后再发送到 DAL。我已经通过 automapper 阅读过,但它是否处理这种情况,如果是,那么如何处理?
截至目前,我已决定将 VM 移动到实体层,实体层将连接到所有三层,以便我可以在同一层发送和接收数据,
还有其他好主意吗?
这就是我将数据从 UI 传递到 BLL
的方式
public ActionResult Create(CompanyVMIndex companyVM)
{
if (ModelState.IsValid)
{
//Calling BLL here
BLLFunction(companyVM)
}
return View("Index");
}
然后在 BLL 中,在 DAL 中使用 Automapper 进行类似的操作
public int BLLfunction(CompanyVMIndex CompanyVM)
{
}
现在,我如何传递数据,因为 BLL 没有 CompanyVMIndex 的定义,它是一个虚拟机,在 Web 中 UI
如果您想成为 "pure",那么您的 BLL 或任何其他层将永远不会看到 ViewModel(或者,通常,您发送给视图的任何模型)。它只会用于控制器和视图之间的通信。
当需要从 BLL 检索数据或将数据发送回 BLL 时,将使用其他 类。数据将被复制到 ViewModel 和从 ViewModel 类.
这样,ViewModel 就准确地包含了控制器与视图进行通信所需的内容,以及视图与控制器进行通信所需的内容。 BLL 可以是关于业务逻辑的,并且可以使用不完全对应于任何 ViewModel 的 类。
例如,ViewModel 可能包含有关客户及其公司的信息,以及有关客户在过去 3 个月内订购的产品的信息。它还可能包含用于在视图中创建用户界面元素的其他数据:例如,运输方式列表。这些数据几乎肯定来自几种不同的 BLL 类 和方法。此数据的形状面向视图和控制器之间的通信。 BLL 类 面向业务逻辑,也可能面向数据库。
我已阅读
我的应用程序包含 4 个层
- Web 项目/UI
- BLL
- DAL(包含 EF)
- 实体层
我现在已经将 VM 放在 UI 层中,它是不同 类 的组合。像这样
public class CompanyVMIndex
{
public CompanyVM Company { get; set; }
public BillingAddressVM BillingAddress { get; set; }
public List<ShippingAddressVM> ShippingAddress { get; set; }
public List<CompanyContactVM> CompanyContact { get; set; }
}
我现在很困惑如何将这些数据从 UI 发送到 BLL,然后再发送到 DAL。我已经通过 automapper 阅读过,但它是否处理这种情况,如果是,那么如何处理? 截至目前,我已决定将 VM 移动到实体层,实体层将连接到所有三层,以便我可以在同一层发送和接收数据, 还有其他好主意吗?
这就是我将数据从 UI 传递到 BLL
的方式 public ActionResult Create(CompanyVMIndex companyVM)
{
if (ModelState.IsValid)
{
//Calling BLL here
BLLFunction(companyVM)
}
return View("Index");
}
然后在 BLL 中,在 DAL 中使用 Automapper 进行类似的操作
public int BLLfunction(CompanyVMIndex CompanyVM)
{
}
现在,我如何传递数据,因为 BLL 没有 CompanyVMIndex 的定义,它是一个虚拟机,在 Web 中 UI
如果您想成为 "pure",那么您的 BLL 或任何其他层将永远不会看到 ViewModel(或者,通常,您发送给视图的任何模型)。它只会用于控制器和视图之间的通信。
当需要从 BLL 检索数据或将数据发送回 BLL 时,将使用其他 类。数据将被复制到 ViewModel 和从 ViewModel 类.
这样,ViewModel 就准确地包含了控制器与视图进行通信所需的内容,以及视图与控制器进行通信所需的内容。 BLL 可以是关于业务逻辑的,并且可以使用不完全对应于任何 ViewModel 的 类。
例如,ViewModel 可能包含有关客户及其公司的信息,以及有关客户在过去 3 个月内订购的产品的信息。它还可能包含用于在视图中创建用户界面元素的其他数据:例如,运输方式列表。这些数据几乎肯定来自几种不同的 BLL 类 和方法。此数据的形状面向视图和控制器之间的通信。 BLL 类 面向业务逻辑,也可能面向数据库。