假设我有以下映射到数据库表的实体(每个匹配的属性名称都可以视为 PK/FK 关系):
public class Person
{
public int PersonID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class Employee
{
public int EmployeeID { get; set; }
public int PersonID { get; set; }
public int Salary { get; set; }
}
public class Executive
{
public int ExecutiveID { get; set; }
public int EmployeeID { get; set; }
public string OfficeNumber { get; set; }
}
public class Contact
{
public int ContactID { get; set; }
public int PersonID { get; set; }
public string PhoneNumber { get; set; }
}
我的架构如下: Controller 调用 Service 层,它调用 Repository 层。
我有一个名为
AddExecutive
的 View ,它收集以下信息: FirstName, LastName, PhoneNumber, Salary
和 OfficeNumber
。鉴于我的架构,提交这些数据的最佳方式是什么?我想我会发布一个包含我收集的所有信息的 ViewModel 并将其传递给服务方法
AddExecutive(AddExecutiveViewModel addExecutiveViewModel)
,然后在服务方法中我将创建 Person, Employee, Executive,
和 Contact
的新实例并将它们彼此附加( Person
object) 并将所有数据传递给 Repository 方法 AddExecutive(Person person)
。然后 Repository 方法将简单地提交数据。听起来对吗?什么是更好的解决方案? 最佳答案
只要你保持关注点分离你就很好。
Controller :将数据绑定(bind)到服务/模型
服务:执行业务逻辑,将持久性交给 Repo
Repo:执行 ACID 事务和查询。
如果您的 View 模型与任何类型的框架问题(即:POCO)分离,那么您应该很好,因为您保持了可测试性。
关于asp.net-mvc - 如何将 Controller 连接到 Service 层到 Repository 层,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4029635/