Self Tracking Entity - Загрузка свойства навигации свойства навигации - PullRequest
1 голос
/ 14 августа 2010

Мне любопытно, что лучше для этой ситуации в Entity Framework 4.0.У меня есть следующая Карта сущностей:

Сущность A -> Сущность B -> Сущность C

Где Сущность A содержит список сущностей B, каждый из которых содержит список сущностей C.Я использую самоконтроль сущностей, и когда я загружаю Entity AI, я делаю что-то похожее на это:

EntityA entityA = ctx.EntityA.Include("EntityB").Where(x => x.Id == id).SingleOrDefault();

Когда я пытался сделать это:

EntityA entityA = ctx.EntityA.Include("EntityB").Include("EntityC").Where(x => x.Id == id).SingleOrDefault();

Сбой, потому что не может найтисвойство навигации «Сущность С».Есть ли способ загрузить свойства навигации?Мне также нужно будет иметь возможность отслеживать изменения, принимать изменения и MarkAsDeleted для моих различных операций CRUD.

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

1 Ответ

1 голос
/ 14 августа 2010

Попробуйте это. Загружает свойство навигации из текущей точки на графике объекта:

EntityA entityA = ctx.EntityA.Include("EntityB.EntityC").Where(x => x.Id == id).SingleOrDefault();

Если для создания ваших сущностей вы использовали шаблон T4 самопроверяемых сущностей, то он должен автоматически отслеживать изменения по всему графу объектов.

После добавления шаблона самотрекинга T4 в ваш проект вы можете открыть его, изменить файл и добавить пользовательский атрибут в раздел, который генерирует свойства навигации.

...