Допустим, у меня есть следующие сущности, которые сопоставляются с таблицами базы данных (каждое совпадающее имя свойства можно рассматривать как отношение 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; }
}
Моя архитектура выглядит следующим образом: Контроллер вызывает уровень Сервис, который вызывает уровень Репозиторий.
У меня есть представление с именем AddExecutive
, которое собирает следующую информацию: FirstName, LastName, PhoneNumber, Salary
и OfficeNumber
.
Каков наилучший способ фиксации этих данных с учетом моей архитектуры? Я думаю, что опубликую ViewModel, содержащую всю собранную мной информацию, и передам ее методу службы AddExecutive(AddExecutiveViewModel addExecutiveViewModel)
, затем в методе службы я создам новые экземпляры Person, Employee, Executive,
и Contact
и присоединю их друг к другу (Person
объект) и передать ВСЕ данные методу репозитория AddExecutive(Person person)
. Затем метод репозитория просто зафиксирует данные. Это звучит правильно? Что было бы лучшим решением?