【问题标题】:Entity Framework 4 and SQL Server App Roles - How to Work Together?Entity Framework 4 和 SQL Server 应用程序角色 - 如何协同工作?
【发布时间】:2010-09-13 20:39:30
【问题描述】:

我正在为一个使用 .NET v4、EF4 和 SQL Server 2008 R2 的新内部应用程序开发项目研究 EF4。迄今为止,我们的小型开发团队很少进行 .NET 开发,并且只演示了 EF 应用程序。我们当前的应用程序使用 DB 应用程序角色来保证安全性,这对我们来说效果很好。

通过阅读和一些基本的实验,我的理解是:

  • EF 可以根据需要打开和关闭数据库连接。但是,可以手动打开和关闭 EntityConnection 以供 EF ObjectContext 使用。

  • SQL Server 应用程序角色安全要求在数据库连接上运行 sp_setapprole 以设置应用程序角色上下文。 sp_unsetapprole 可用于将连接恢复到其原始上下文。

  • 默认情况下,数据库连接是池化的。如果连接在返回池之前未恢复到其原始上下文,则将 sp_setapprole 与连接池一起使用可能会出现问题。

如果以上所有内容都正确,那么将 EF4 与 app-roles 一起使用的明显方法是手动打开和关闭 EntityConnection,确保在打开后执行 sp_setapprole,在关闭前执行 sp_unsetapprole。

有更好的方法吗?我最担心的是在没有先调用 sp_unsetapprole 的情况下意外关闭连接。似乎是一个可能不会立即注意到的错误。

【问题讨论】:

    标签: entity-framework-4 database-connection connection-pooling


    【解决方案1】:

    您只需添加“Pooling=false;”到 app.config 中的商店连接(提供者连接字符串)。
    如果您实际上不需要池化,这似乎是最简单的解决方案。

    【讨论】:

    • 这应该是一个容易尝试的选择。但我想知道性能会受到什么影响?
    猜你喜欢
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多