2015-06-06 3 views
1

Say У меня есть два классаКарта класса на основе стоимости недвижимости

class Employee 
{ 
    public string EmployeeId { get; set; } 
    public int Manager { get; set; } 
} 

class Manager : Employee 
{ 

} 

где int Manager может быть либо 1 или 0. Я хочу создать сопоставление в моем EmployeeContext, чтобы записи сотрудников в таблице employee, где менеджер равен 1, сопоставляются с классом Manager.

+0

Почему бы не избавиться от класса менеджера и добавить класс bool в класс сотрудников, говорящий вам, является ли этот сотрудник менеджером. Вышеприведенное не похоже на хороший способ кодирования такого кода для меня. – deathismyfriend

+0

У меня есть другие классы, которые требуют, чтобы сотрудники были менеджерами. Я решил, могу ли я создать это сопоставление, тогда есть много проверок, которые я мог бы устранить. Кроме того, схема базы данных уже создана. –

+0

Если у вас есть бизнес-класс или основной класс, я бы создал метод добавления в этом основном классе для обработки добавления менеджеров и сотрудников. – deathismyfriend

ответ

1

Вам необходимо реализовать шаблон наследования TPH, как описано here. Что нужно добавить к описанной реализации - вам нужно включить свойство Discriminator в классы объектов и сопоставить его с полем соответствующей базы данных. Затем реализуйте свой int Manager в соответствии со значением свойства Discriminator - и Manager может быть только для чтения.

Если вы хотите, чтобы работник был менеджером, вы должны изменить значение поля Discriminator. В свою очередь, вы должны знать, что происходит в вашем db. TPH далека от серебряной пули, и вам может понадобиться использовать другой образец, но с этим хорошо начать.

См. Также: Entity Framework Inheritance Mapping (TPH) и How to map inherited entities in EF code-first.

Смежные вопросы