所以我的任务是研究我以前从未做过的事情。
在 VS2010 中使用 C# 构建的 3 个应用程序模块正在使用 1 个数据库 (Database1) 和dbo.Samples等表,这些表都具有模式“ dbo.Table ”。出于某种更高的未知原因,已要求将 Database1 下的所有这些表移动到具有更多模式的 Database2 中,例如 padmin.PSTIF、petro.Facilities、webdc.AppTransactions 等。
在这 3 个模块中,所有连接字符串都是通过app.config文件配置的,所有用于显示的数据事务/选择都是通过使用连接字符串的硬编码 SQL 语句完成的。
我担心的是,如果我将dbo.Samples从 Database1 移到 Database2 中,并将架构更改为moss.Samples之类的东西,那么这些硬编码语句中的每一个是否也需要更新?目前我可以编写类似“SELECT * FROM Samples”的代码。我是否必须更改此语句,因为它将使用新模式,即使我将连接字符串更新为 Database2?
编辑:
我在 DB2 的测试环境版本中添加了一些 DB1 的虚拟副本表,并在应用程序中进行了实验。将连接字符串更改为现在指向 DB2 后,我发现我必须检查每个硬编码 SQL 语句并更改表的每次使用以包含新模式(更改FROM Sample
为FROM moss.Sample
)。
有谁知道是否可以在连接字符串本身中指定我希望使用的架构?如果可能的话,这将使我免于在 3 个应用程序中更改大约 200 条单独的语句。
我的示例连接字符串如下:
<connectionStrings>
<add name="conString" connectionString="Data Source=SERVER.domain.state.acroynym.us;Initial Catalog=DatabaseName;Integrated Security=true;"
providerName="System.Data.SqlClient" />
</connectionStrings>
我尝试更改Initial Catalog=DatabaseName
为Initial Catalog=DatabaseName.moss
,但应用程序返回它找不到数据库DatabaseName.moss
,这是有道理的,只是觉得值得一试。