asp.net-mvc - 如何将Controller连接到Service层再到Repository层

标签 asp.net-mvc entity-framework asp.net-mvc-2 entity-framework-4 repository

假设我有以下映射到数据库表的实体(每个匹配的属性名称都可以被视为 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、ExecutiveContact 并将它们相互关联(Person 对象)并将所有数据传递给 Repository 方法 AddExecutive(Person).然后 Repository 方法将简单地提交数据。听起来对吗?什么是更好的解决方案?

最佳答案

只要您保持关注点分离就可以了。 Controller :将数据绑定(bind)到服务/模型 服务:执行业务逻辑,将持久性交给 Repo Repo:执行 ACID 事务和查询。

如果您的 View 模型与任何类型的框架问题(即:POCO)分离,您应该很好,因为您保持了可测试性。

关于asp.net-mvc - 如何将Controller连接到Service层再到Repository层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4029635/

相关文章:

c# - 如何制定 GroupJoin() 声明

c# - Entity Framework 代码第一个子导航属性 null

asp.net - MVC2 - 逻辑应该去哪里的基本问题

c# - 如何在 Entity Framework 中使用 LINQ-to-SQL 回滚事务?

c# - 输入提交与输入按钮

asp.net-mvc - ASP.NET MVC 2.0 - 禁用 Controller /操作的自定义错误重定向

javascript - 如何使用 Angular 模块在我的 View 中识别我的模型对象?

asp.net - 将 MVC 站点部署到 IIS 会导致它找不到默认的共享局部 View

asp.net-mvc - MVC 中是否有最佳实践和推荐的 Session 变量替代方案

c# - .NET Core MVC 中的部分内容(用于视频/音频流)