У меня есть несколько классов сущностей, необходимых для настройки собственного проекта. Требование состоит в том, что клиент сохраняет в памяти все данные, необходимые для этой конфигурации, и возвращает бэкэнду большой объект, чтобы он мог выполнить несколько операций вставки / удаления. Например: допустим, у нас есть эти модели:
public class Employee
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class Contract
{
public int Id { get; set; }
public string Descritpion { get; set; }
public DateTime ValidityDateStart { get; set; }
public DateTime ValidityDateEnd { get; set; }
}
public class ContractEmployee
{
public int Id { get; set; }
public Employee Employee { get; set; }
public Contract Contract { get; set; }
}
Мы сказали, что клиент манипулирует данными всех сущностей, прежде чем вернуться к бэкэнду, поэтому мне нужна структура данных, которая бы содержала все. Проблема в том, как это сделать. Должен ли я сделать простую коллекцию этих сущностей?
public class Dto
{
public List<Employee> Employees { get; set; }
public List<Contract> ContractRegistry { get; set; }
public List<ContractEmployee> Contracts { get; set; }
}
Пользователь может выполнять операции CRUD на каждой таблице. В этом случае клиент, что отправить в бэкэнд? Все данные? Только строки, которые были изменены? И, в этом случае, как я могу знать, что делать со строками, когда мне нужно сохранить данные в EF?
Должен ли я указать в одной строке, какую операцию выполнять? Например, класс сотрудника становится следующим:
public class Employee
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public EnumOperation Operation { get; set; } // Values: 0=Insert; 1=Modify; 2=Update; 3=Delete
}
Я считаю этот путь ужасным, и я бы не стал его рассматривать ...
Каков наилучший подход к управлению этим делом?