Я новичок в EF и попал в блокпост. Я пытаюсь получить список свойств навигации для типов сущностей, которые основаны на базовом типе. Я собирался использовать ....Свойства навигационной структуры Entity Framework на производных типах
ObjectContext objectContext = ((System.Data.Entity.Infrastructure.IObjectContextAdapter)context).ObjectContext;
var entitySetElementType = objectContext.CreateObjectSet<DerivedType>().EntitySet.ElementType;
foreach(var navigationProperty in entitySetElementType.NavigationProperties)
{ //need PropertyInfo here}
Здесь я узнал, что не могу получить ObjectSet производного типа. Исключение брошено является
«Там нет EntitySets, определенного для указанного типа объекта „SurveyDALv2.Model.Correspondence“. Если „SurveyDALv2.Model.Correspondence“представляет собой производный типа, используйте базовый тип вместо «.
Я понимаю, что я могу получить ObjectQuery для производных сущностей с использованием
objectContext.CreateObjectSet<BaseType>().OfType<DerivedType>()
Но это не поможет с получением списка навигационных свойств (если я не хватает чего-то). Я не вижу, как получить доступ к EntitySet.NavigationProperties для производного типа сущности.
Любая помощь очень ценится.
Никогда не пробовал с основным контекстом, но вы можете попробовать это: 'CreateObjectSet() .OfType ()' вместо 'CreateObjectSet ()'? –
Спасибо, но я ищу список свойств навигации, определенных для объекта производного типа. Этот (http://stackoverflow.com/questions/17886725/ef5-how-to-get-list-of-navigation-properties-for-a-domain-object отлично подходит для получения списка свойств навигации, если только он не является производным (ответ от marsman) – Michael