SubSonic 3 — Простой репозиторий — Отношения «один ко многим»

StackOverflow https://stackoverflow.com/questions/1300207

  •  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; }
}

Сделал от руки, так что могла быть пара ошибок.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top