Получение имен сущностей из контекста в EF 4 - PullRequest
0 голосов
/ 22 августа 2011

Я хотел бы получить имена всех своих сущностей из контекста и имена свойств от сущности. Вторая проблема может быть решена с помощью отражения, но как сделать первую часть?

Например, у меня есть сущности User и Address, у каждого пользователя есть адрес. В результате мне нужно получить следующее:

Entity: User
Property: LastName
Property: FirstName
Property: Address

Entity: Address
Property: City
Property: Street

1 Ответ

0 голосов
/ 22 августа 2011

Для начала, сущности (базовый тип ComplexObject) фактически отличаются от контекста и размещаются в своих собственных классах.

Если вы хотите найти все типы сущностей, вы можете использовать relfection для поиска в текущей сборке любого типа, который наследует ComplexObject, например:

List<Type> Types = Assembly.GetExecutingAssembly().GetTypes().Where(T => T.IsSubclassOf(typeof(ComplexObject))).ToList();

Каждый из этих типов определяется атрибутом EdmxComplexType, который дает вам имя пространства имен и имя сложного типа. Вы можете получить эти атрибуты для каждого типа T, например:

T Instance_Of_T = (T)Activator.CreateInstance(T);
System.Data.Objects.DataClasses.EdmxComplexTypeAttribute complexTypeAttr = TypeDescriptor.GetAttributes(Instance_Of_T).OfType<System.Data.Objects.DataClasses.EdmxComplexTypeAttribute>().ToList().Single();

string NamespaceName = complexTypeAttr.NamespaceName;
string TypeName = complexTypeAttr.Name;

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...