SubSonic 3 - Простой репозиторий - отношения один ко многим - PullRequest
1 голос
/ 19 августа 2009

Впервые я использую 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, EmployeeId, StartDate, EndDate

UPDATE

Сотрудник может работать в StoreA с 2009-01-01 по 2009-04-04 и работать в StoreB с 2009-04-05 до ... И я не хочу, чтобы моя таблица данных повторяла всю информацию моего сотрудника каждый раз, когда сотрудник меняет магазин, в котором он работает. В этом примере у сотрудника есть только имя, но предположим, что у сотрудника есть 10 свойств (адрес, возраст, пол ...)

Как я мог этого достичь?

Ответы [ 2 ]

1 голос
/ 19 августа 2009

Исходя из вашего комментария и обновленного вопроса, похоже, что вы хотите что-то вроде следующего:

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; }
}
0 голосов
/ 08 ноября 2009

На самом деле вам понадобится отношение «многие ко многим», которое присоединит запись «Сотрудник» к записи «Магазин» с полезной нагрузкой начальных и конечных дат.

Объекты будут выглядеть так:

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

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

...