假设我有以下映射到数据库表的实体(每个匹配的属性名称都可以视为 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, SalaryOfficeNumber

鉴于我的架构,提交这些数据的最佳方式是什么?我想我会发布一个包含我收集的所有信息的 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/

10-13 06:53