SubSonic 3 — Простой репозиторий — Отношения «один ко многим»
-
18-09-2019 - |
Вопрос
Впервые пользуюсь Subsonic.
Допустим, у меня есть эти классы:
public class Store
{
public int Id { get; set; }
public String Name { get; set; }
}
public class Employee
{
public int Id { get; set; }
public String Name { get; set; }
}
Сотрудник связан с магазином с датой приема на работу.Это значит, что в базе данных у меня будет средняя таблица с StoreId,СотрудникId,StartDate,EndDate
ОБНОВЛЯТЬ
Сотрудник может работать в StoreA с 1 января 2009 г. по 4 апреля 2009 г. и работать в StoreB с 05 апреля 2009 г. по...И я не хочу, чтобы моя таблица данных повторяла всю информацию о моем сотруднике каждый раз, когда сотрудник меняет магазин, в котором он работает.В этом примере у сотрудника есть только имя, но, скажем, у сотрудника есть 10 свойств (адрес, возраст, пол...).
Как я мог этого добиться?
Решение
Судя по вашему комментарию и обновленному вопросу, похоже, вы хотите что-то вроде следующего:
public class Store
{
public int Id { get; set; }
public String Name { get; set; }
}
public class StoreEmployee
{
public int Id { get; set; }
public Employee Employee { get; set; }
public Store Store { get; set; }
public DateTime HiredDate { get; set; }
}
public class Employee
{
public int Id { get; set; }
public String Name { get; set; }
}
Другие советы
На самом деле вам понадобится связь «многие ко многим», которая соединит запись сотрудника с записью магазина с полезной нагрузкой дат начала и окончания.
Объекты будут выглядеть следующим образом:
public class Store
{
public int Id { get; set; }
public String Name { get; set; }
}
public class Employee
{
public int Id { get; set; }
public String Name { get; set; }
public IList<EmploymentTerm> EmploymentTerms { get; set; }
}
public class EmploymentTerm
{
public int Id { get; set; }
public Store Store { get; set; }
public Employee Employee { get; set; }
public DateTime? StartDate { get; set; }
public DateTime? EndDate { get; set; }
}
Сделал от руки, так что могла быть пара ошибок.