【发布时间】:2013-05-21 20:41:47
【问题描述】:
我有一个应用程序应该使用数据库中的应用程序角色。 我正在尝试使用实际使用 Subsonic (2) 运行的查询来完成这项工作。 为此,我创建了自己的 DataProvider,它继承自 Subsonic 的 SqlDataProvider。 它覆盖 CreateConnection 函数,并在创建连接后调用 sp_appsetrole 设置应用程序角色。 这部分工作正常,我可以使用应用程序角色获取数据。
当我尝试取消设置应用程序角色时出现问题。在查询完成后,我在代码中找不到调用我的提供程序的任何地方,所以我尝试通过更改 SubSonic 代码来添加我自己的。问题是 Subsonic 使用数据阅读器。它从数据读取器加载数据,然后将其关闭。
- 如果我在数据读取器关闭之前取消设置应用程序角色,我会收到一条错误消息:已经有一个打开的数据读取器与此命令关联,必须先关闭。时间>
- 如果我在数据读取器关闭之后取消设置应用程序角色,我会收到一条错误消息,提示 ExecuteNonQuery 需要一个打开且可用的连接。连接的当前状态为关闭。
我似乎找不到在不关闭连接的情况下关闭数据读取器的方法。
【问题讨论】:
标签: sql-server subsonic sqldatareader