EF4, CodeFirst и Respository Pattern - разница между использованием DbSet и DataContext - PullRequest
1 голос
/ 22 декабря 2011

Попытка перенести существующий проект EF 4.2 для использования шаблонов Repository и Unit of Work. В примерах многих людей я вижу, что они используют коллекции DbSet в репозиториях, но для меня это кажется ограниченным, поскольку я не могу использовать такие вещи, как .Include (). С другой стороны, есть другие примеры, использующие DataContext (например, этот http://www.efekaptan.com/repository-pattern-with-entity-framework-code-first-4.1).

Итак ... есть ли причина, по которой я не хотел бы использовать DataContext?

1 Ответ

0 голосов
/ 22 декабря 2011

Вы можете использовать Include с DbSet<T>. Вы должны ссылаться на DbContext в своем хранилище (передать его экземпляру хранилища через конструктор), поскольку это требуется для более сложных операций. Хранение ссылки на DbSet<T> является просто упрощением / оптимизацией, чтобы избежать вызова Set<T>() в контексте каждый раз, когда вы хотите получить к нему доступ.

Вы не должны создавать экземпляр контекста в реализации репозитория (как показано в вашем связанном вопросе, потому что это будет идти против единицы работы.

...