Если вы хотите использовать метаданные Entity Frameworks, вам нужно просмотреть MetadataWorkspace
, который свисает с ObjectContext
.
Отправной точкой является получение EntityType для вашего базового типа, в вашем случае Contact.
У меня есть EF серия советов и в Совет 13 Я показываю метод расширения на MetadataWorkspace
, который получает EntityType
для определенного типа CLR:
public static EntityType GetCSpaceEntityType<T>(
this MetadataWorkspace workspace);
Вы можете использовать это так:
var contactEntity = ctx.MetadataWorkspace.GetCSpaceEntityType<Contact>();
Получив это, вы можете посмотреть его свойства NavigationProperties и найти интересующие вас отношения, включая:
1021 * т.е. *
foreach(var np in contactEntity.NavigationProperties)
{
Console.WriteLine("Include: {0}", np.Name);
Console.WriteLine("... Recursively include ");
EntityType relatedType =
(np.ToEndMember.TypeUsage.EdmType as RefType).ElementType;
//TODO: go repeat the same process... i.e. look at the relatedTypes
// navProps too until you decide to stop.
}
Конечно, как вы решите, что вы хотите включить, зависит от вас.
Надеюсь, это поможет
Alex