EF具有SQL服务器应用程序角色

okr*_*now 3 c# sql-server entity-framework

我需要在sql server上使用应用程序规则安全性.我想使用Enity Framework Code First.

成功登录后,我的连接将设置为应用程序角色.然后我使用此连接创建我的DbContext.

但是:EF期望一个封闭的连接对象.关闭连接会丢弃应用程序角色.

我怎样才能解决这个难题?

okr*_*now 6

我设法通过两个步骤完成这项工作:

切换连接池,这是使用应用程序角色的连接一直提到的.由于我有一个桌面应用程序,这对我来说没问题.

DbConnection.StateChanged在每次打开连接时添加处理程序并激活应用程序角色.没有连接池,没有必要sp_unsetapprole关闭.这对我有用:

context.Database.Connection.StateChanged += (sender, args) =>
  if (args.CurrentState == ConnectionState.Open) {
    activateAppRole((DbConnection)sender, ...);
  }
}
Run Code Online (Sandbox Code Playgroud)

我想,如果Pooling对某人至关重要,她可能会sp_unsetapprole在同一个处理程序中调用关闭连接.