2012-04-14 2 views
2

У меня есть довольно большой проект ASP.NET с поддержкой SQL, который использует Entity Framework для взаимодействия с базой данных.Управление тем, как часто создается объект-объект ObjectContext

Мой вопрос: должен ли я создать экземпляр ObjectContext, определенный файлами edmx/designer в каждом классе/методе, или обернуть его вокруг статического класса, который будет создавать экземпляр onload и в основном обрабатывать все запросы через один экземпляр.

У меня будет много пользователей, использующих ObjectContext для чтения и обновления БД, параллелизма и безопасности потоков - мои самые большие проблемы.

EDIT: Этот код в конечном итоге будет работать в IIS и быть подверженным переработке.

ответ

1

В большинстве случаев вам нужен только один контекст для каждого запроса. Только для отдельных сценариев может потребоваться больше контекстов для одного запроса, кроме never share context among requests.

0

Класс ObjectContext не является потокобезопасным. Целостность данных объектов в ObjectContext не может быть обеспечена в многопотоковых сценариях .

Источник: http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.aspx

Поэтому наилучшим подходом является использование ObjectContext для каждого запроса HTTP. Создайте класс RepositoryBase, который каждый репозиторий простирается от и в RepositoryBase определяет общие операции CRUD (, предпочтительно, общий) и делает новый экземпляр только в том случае, если он запрашивает его null.

Смежные вопросы