Я использую структуру сущности, нетерпеливую загрузку, и я пытаюсь загрузить часть моего графика. У меня есть таблица Person, унаследованная кандидатом и тренером, и у меня есть проблема, когда кто-то является одновременно и тренером, и кандидатом (ПРИМЕЧАНИЕ: у тренера и кандидата нет никаких дополнительных свойств, только первичный ключ, унаследованный от Person).Включить навигационные свойства унаследованного объекта
Это мой запрос:
RequestInfo ri = context.RequestInfo.Include(x => x.Request).Include(x => x.TeamName).Include(x => x.Sender)
.Include(x => x.TrainingLanguage).Include(x => x.TrainingLocation).Include(x => x.CcPerson.Select(p => p.Person))
.Include(x => x.Request.Select(c => c.Candidate))
.Include(x => x.Request.Select(c => c.Candidate).Select(ct => ct.CandidateType))
.Include(x => x.Request.Select(c => c.Candidate.CandidateType.Select(cwp => cwp.CandidateWorkPresence)))
.Where(x => x.Id == r.Id).Single();
Это, вероятно, могло бы быть лучше, но то, что у меня есть, как проблема, когда какой-то человек является кандидатом и тренер я получаю следующее исключение:
All objects in the EntitySet 'EmployeesTrainingEntities.Person' must have unique primary keys. However, an instance of type 'EmployeesTrainingModel.Candidate' and an instance of type 'EmployeesTrainingModel.Trainer' both have the same primary key value, 'EntitySet=Person;PersonId=5'.
Я пытаюсь найти решение проблемы, но мне не повезло, и я увидел, что у многих людей есть эта проблема. Может быть, я что-то упустил, поэтому, если у кого-то есть какое-то решение, предложение, это приветствуется. Если необходимо, я добавлю фотографию, содержащую часть моей модели, которую я пытаюсь загрузить.
EDIT: Модель содержит RequestInfo
лицо, которое имеет общую информацию о запросах на обучение. RequestInfo
имеет коллекцию Requests
, Sender
, которая составляет Person
и сбор CcPersons
(лица, которые последуют за обучением). Request
содержит Candidate
.
Я нашел решение проблемы. Когда у меня есть человек, который Тренер и Кандидат, то, что я делаю, наследует перекрытие, и кажется, что EntityFramework не позволяет наложение наложения. Итак, я заменил отношения наследования с ассоциацией, и теперь он работает правильно.
Использование наследования для вашей модели не кажется правильным. Если «Лицо» может быть как «Тренер», так и «Кандидат», вы не можете получить его из «Личности», потому что это означает, что «Лицо» может быть только ** либо «Тренер» ** или ** «Кандидат», но оба они оба. Возможно, у вас должен быть базовый элемент «Роль» и получить «Тренер» и «Кандидат» из «Роль». Затем дайте 'Person' a ** collection **' Role's. – Slauma
Может случиться так, что какой-то Человек является как «Тренер», так и «Кандидат». У меня есть тренеры для какого-то курса, но в моем процессе возможно, что один из тренеров применит другого тренера для обучения, и его тренер будет кандидатом на обучение. Когда что-то подобное произойдет, я не могу включить информацию о кандидате в свой запрос, потому что в обеих таблицах «Кандидат» и «Тренер» есть тот же «PersonId». – Alt
Я отредактировал сообщение с некоторым дополнительным объяснением части модели, потому что я не могу добавить фотографию. – Alt