Объекты, которые создают объекты с использованием Entity Framework - PullRequest
3 голосов
/ 18 января 2010

Как вы справляетесь со случаем, когда сущность должна создать в одном из своих методов другие сущности?Моя проблема заключается в том, что, поскольку у каждого отдельного объекта нет доступа к объекту ObjectContext, то есть к объекту с методами AddToBlahs (), он не может этого сделать.

Например, если у модели Site есть метод UpdateLinks ()который должен создавать объекты Link, принадлежащие этому сайту.Метод UpdateLinks () не имеет ObjectContext.Чем ты занимаешься?Вы передаете ему один, например:

public void UpdateLinks(ProjectEntities db) {
    foreach (var link in FetchLinks()) {
        db.AddToLinks(link);
    }
}

или используете другой шаблон?

Ответы [ 2 ]

2 голосов
/ 18 января 2010

Вам не нужен контекст для этого.

Поскольку Site.UpdateLinks создает Link объекты , принадлежащие экземпляру, экземпляр будет иметь ассоциации с новым Site. Добавление Link к Site.Links автоматически делает новый Link частью того же контекста (если есть), что и Site. Аналогично, когда вы сохраняете Site, Link будет сохранен вместе с ним.

1 голос
/ 19 января 2010

Не уверен насчет ответа Крейга Стунца ... Ссылка должна быть прикреплена к контексту, но добавление ссылки на сайт. Ссылки не присоединяют ее автоматически.В любом случае вам нужно выполнить db.AddToLinks (link).

Но, отвечая на ваш вопрос, одним из лучших шаблонов для управления ObjectContext, вероятно, является шаблон UnitOfWork.Используя его, вы можете сделать сущности «осведомленными о том, к какой области они в данный момент принадлежат».Проверьте эту статью для подробного описания и примеров реализации.Вы все еще можете передать ObjectContext методу в качестве параметра, как в примере (в более простой реализации).

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