2015-12-31 5 views
1

В EF6 можно было использовать System.Data.Entity.Infrastructure.Interception для реализации ролей приложения для MS SQL Server. Я не могу найти ссылку на перехват в библиотеках EF7. В «Дорожной карте» для EF7 в качестве приоритета перечислены «Простые механизмы перехвата запросов и обновлений». Будет ли это обеспечивать функциональность для реализации ролей приложений? Если это так здорово, но есть ли причина, по которой роль приложения должна скрываться за такой неясностью? Почему мы не можем просто иметь свойства DbContext для имени пользователя и пароля для роли приложения?Entity Framework 7 Роль приложения

ответ

0

Rowan Miller, Microsoft Program Manager, предоставил некоторые рекомендации, которые привели к решению этой проблемы. В заключение добавьте конструктор к сгенерированному DbContext, который открывает соединение и выполняет sp_setapprole. Если вы не открываете соединение сначала, соединение будет закрыто после sp_setapprole, и вы потеряете роль приложения перед выполнением вашего последующего запроса. В какой-то момент эта возможность может появиться в библиотеке перехвата EF7, но эта стратегия работает с EF7 RC1.

public partial class YourContext : DbContext 
{ 
    public YourContext() 
    { 
     try 
     { 
      this.Database.OpenConnection(); 
      this.Database.ExecuteSqlCommand("EXEC sp_setapprole appRole, appPsw"); 
     } 
     catch (Exception exception) 
     { 
      ... 
     } 
    } 
Смежные вопросы