1

假设我有一个程序集,其中包含does_stuff()已安装在 SQL Server 数据库中的方法。我希望此方法/存储过程引用数据库中的特定已知表。如何在不知道其托管位置does_stuff的情况下访问表的内容?

假设does_stuff应该访问 table info_config。如果它托管在数据库ALPHA中,它将访问ALPHA.info_config 如果它托管在数据库BETA中,它将访问BETA.info_config

我知道如何使用 ADO.NET 打开数据库连接等,但这些需要特定的服务器和数据库字符串。我需要灵活性,以便程序集无论在何处托管都可以执行相同的操作。

谷歌搜索没有给我任何东西。

提前致谢

4

1 回答 1

0

您所要做的就是使用上下文连接

目前它可能看起来并不明显,但 CLR 代码总是在某些上下文中执行。总有一些东西(某人)直接或在某个父范围内执行代码(存储过程调用 CLR 函数,CLR 触发器在插入时触发等)。当程序执行到达上下文连接时,它只需要该范围的连接参数(服务器、数据库、SET 选项等)。

I want this method/storedproc to refer to a specific known table in the database.

打开上下文连接后,您将照常查询数据库。

using (SqlConnection conn = new SqlConnection("context connection=true"))
{
    conn.Open();
    SqlCommand cmd = new SqlCommand("SELECT * FROM MyTable");
    SqlContext.Pipe.ExecuteAndSend(cmd);
}
于 2013-07-17T04:09:41.173 回答