Entity Framework 4 и роли приложения SQL Server - как работать вместе? - PullRequest
3 голосов
/ 14 сентября 2010

Я исследую EF4 для нового собственного проекта разработки приложений с использованием .NET v4, EF4 и SQL Server 2008 R2. На сегодняшний день наша небольшая команда разработчиков практически не занималась разработкой .NET и только демонстрировала EF-приложения. Наши текущие приложения используют роли приложений БД для безопасности, и это хорошо сработало для нас.

Из прочтения и некоторых базовых экспериментов я понимаю:

  • EF может открывать и закрывать соединения с БД по мере необходимости. Однако можно вручную открыть и закрыть EntityConnection для использования EF ObjectContext.

  • Безопасность роли приложения SQL Server требует запуска sp_setapprole для соединений с БД, чтобы установить контекст роли приложения. Процедура sp_unsetapprole может использоваться для возврата соединения в исходный контекст.

  • По умолчанию соединения с БД объединяются. Использование sp_setapprole с пулом соединений может быть проблематичным, если соединения не восстанавливаются в их исходном контексте до их возвращения в пул.

Если все вышеперечисленное верно, то очевидный способ использования EF4 с ролями приложений - вручную открыть и закрыть EntityConnection, обязательно выполнив sp_setapprole после открытия и sp_unsetapprole перед закрытием.

Есть ли лучший способ? Меня больше всего беспокоит случайное закрытие соединения без предварительного вызова sp_unsetapprole. Похоже на ошибку, которая не может быть замечена сразу.

1 Ответ

0 голосов
/ 14 сентября 2010

Вы можете просто добавить "Pooling = false;"к соединению вашего магазина в app.config (Строка подключения провайдера).Если вам на самом деле не нужен пул, это, кажется, самое простое решение.

...