2013-07-30 2 views
1

Допустим, у меня есть таблица компании, таблица отдела, таблица диспетчера и таблица Employee. Между таблицами списков есть отношения от одного до многих. Таким образом, таблица Employee имеет внешний ключ ManagerID, таблицу Manager - ключ DepartmentID и т. Д.Можно ли удалить привязанные навигационные свойства в Entity Framework

Я использовал конструктор EF для создания DbContext и других классов. Я добавил ассоциации между таблицами с внешними ключами в дизайнере. Проблема в том, что я не могу установить связь между таблицей Employee и таблицами Департамента или Компании в дизайнере.

Я попытался создать отдельный частичный класс для Работника со следующим свойством отдела:

public Department Department { 
    get { return this.Manager.Department; } 
} 

Однако, когда я запускаю программу, я получаю следующее исключение:

Указанный член типа " Менеджер 'не поддерживается в LINQ для сущностей. Поддерживаются только инициализаторы, сущности и свойства навигации сущности.

Я часто запрашиваю таблицу Employee, а затем хочу отобразить информацию о компании и отделе с сотрудником. Таким образом, существует много строк с Employee.Manager.Department.Company.Field, что делает его искаженным.

Лучше ли добавить CompanyID в таблицу Менеджера, а идентификатор CompanyID и DepartmentID в таблицу Employee или это повлияет на нормализацию базы данных? Какие парадигмы описывают эти проблемы?

Мысли, мнения приветствуются

ответ

1

свойства без сеттеров полностью игнорировались EF поэтому исключение вы получаете не относится к тем кусок кода. ваш подход прекрасен, и если вы правильно настроите свои объекты, он будет работать.

+0

Я попытался добавить setter 'set {Order.Event = значение;}', но я все равно получаю ту же ошибку. –

+0

вы не будете добавлять сеттер, сначала заставьте свою модель работать, а затем, чтобы ваш код был прав – TakeMeAsAGuest

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