Безопасно ли использовать один Entity Framework Context для потока? ... да? как? - PullRequest
2 голосов
/ 31 марта 2011

Вероятно, это два вопроса в одном, я использую один контекст EF для запроса, но я хочу использовать один для каждого потока, потому что я собираюсь сделать некоторую сложную задачу в другом потоке во время запроса.

Так это безопасно? Если ответ да, как это сделать? как хранить объекты в потоке и вернуть их обратно?

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 31 марта 2011

Это безопасно, только если у вас есть полный контроль над потоком. Это означает, что вы должны создать нить, а нить должна умереть после завершения работы. Если вы используете пул потоков для запроса работы, вы не должны использовать контекст для потока. Пул потоков используется, например, для потоков, обслуживающих запросы ASP.NET, ASP.NET MVC или WCF. Контекст не является потокобезопасным, поэтому не разделяйте его между потоками.

Для хранения чего-либо в потоке используйте переменную static и пометьте ее ThreadStaticAttribute.

1 голос
/ 31 марта 2011

Я бы ограничил область действия контекста EF конкретной единицей работы на уровне запроса .

Если у вас есть единицы работы, которые никак не связаны с запросами, вы можете создать новый поток для этого и использовать новый контекст EF, просто утилизируйте его после завершения этой единицы работы. Имейте в виду, что контексты EF не являются потокобезопасными, то есть вы не можете использовать один и тот же контекст более чем в одном потоке.

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