Re: Помогите понять EntitySets, AssociationSets, EntityConta
От: stump http://stump-workshop.blogspot.com/
Дата: 21.10.08 05:50
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Перечитываю вот MSDN вот в который раз и до конца не догоняю назначения этих объектов. EntitySets, как я понял, типа коллекции EntityType-ов, но причем несколько колекция для одного типа могут быть, а вот один экземпляр Entity не может входить в 2 коллекции. AssociationSets — это коллекция Association, но вот суть и предназначения этого я не понял. EntityContainer какбы все содержит, но опять же не совсем понятно зачем там повторяется описание ассоциаций.


EntitySet — в runtime это действительно коллекция, только не типов а экземпляров объектов, в designtime (в EDM) — это логический контейнер для типов объектов. С AssociationSet примерно тоже самое.
EntityObject — это экземпляр персистентного объекта (напр, объект с данными о конкретном человеке Васе Пупкине)
EntityType — это описание типа этого персистентного объекта (напр, тип Персона)
EntitySet — это контейнер для объектов EntityType и его наследников (напр, Персоны — все объекты Персоны).
EntityContainer — это общий контейнер для всей логической модели данных (в runtime он представлен ObjectContext-ом в котором живут все экземпляры объектов вытянутые из БД).

Теперь об отношениях между ними.
Экземпляр EntityObject может принадлежать только одному EntitySet.
EntitySet является контейнером не только для конкретного EntityType но и для всех унаследованных от него типов (напр, Персоны это сет для типа Персона и его наследников, типов Студент и Преподаватель).
Один EntityType может входить в несколько EntitySet (например тип Персона может входить в сеты Сотрудники и Клиенты, если переводить в термины БД, то это равнозначно ситуации, когда у вас есть две таблицы совершенно одинаковой структуры). Но конкретный экземпляр принадлежит только одному EntitySet-у.

Все это специфика, накладываемая персистентностью объектов.
Понедельник начинается в субботу
ef
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.