这是一个奇怪的问题,我希望我能正确地构建它。我使用Visual Studio DataSet设计器来创建SQL表适配器以将我的项目链接到SQL服务器。连接字符串是通过ODBC条目。
所有表都有默认查询,例如update和insert。在dataset.Designer.cs文件中,这些命令是自动生成的。这是一个例子:
this._adapter.DeleteCommand = new global::System.Data.Odbc.OdbcCommand();
this._adapter.DeleteCommand.Connection = this.Connection;
this._adapter.DeleteCommand.CommandText = "DELETE FROM [pftestbench].[dbo].[TestData_TestGroupInstrument] WHERE (([TestGroup" +
"RecordNumber] = ?) AND ([InstrumentSerial] = ?))";
this._adapter.DeleteCommand.CommandType = global::System.Data.CommandType.Text;
this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.Odbc.OdbcParameter("Original_TestGroupRecordNumber", global::System.Data.Odbc.OdbcType.BigInt, 0, global::System.Data.ParameterDirection.Input, ((byte)(0)), ((byte)(0)), "TestGroupRecordNumber", global::System.Data.DataRowVersion.Original, false, null));
this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.Odbc.OdbcParameter("Original_InstrumentSerial", global::System.Data.Odbc.OdbcType.NVarChar, 0, global::System.Data.ParameterDirection.Input, ((byte)(0)), ((byte)(0)), "InstrumentSerial", global::System.Data.DataRowVersion.Original, false, null));
我对CommandText行感兴趣:
this._adapter.DeleteCommand.CommandText = "DELETE FROM [pftestbench].[dbo].[TestData_TestGroupInstrument] WHERE (([TestGroup" +
"RecordNumber] = ?) AND ([InstrumentSerial] = ?))";
您可以看到这取决于数据库名称,以及在更改数据库名称时如何不受欢迎。现在,除了其中一个表之外的所有表都指定了数据库名称。没有的一个表有一个这样的CommandText行:
this._adapter.DeleteCommand.CommandText = @"DELETE FROM [TestData_Instrument] WHERE (([Serial] = ?) AND ((? = 1 AND [Model] IS NULL) OR ([Model] = ?)) AND ((? = 1 AND [CalibrationDue] IS NULL) OR ([CalibrationDue] = ?)) AND ((? = 1 AND [Trace] IS NULL) OR ([Trace] = ?)) AND ((? = 1 AND [Manufacturer] IS NULL) OR ([Manufacturer] = ?)))";
最后一个是理想情况下我想要的,因为它与数据库名称无关。这就是我开始使用ODBC的原因,但显然我没有做正确的事情。
我的问题是,如何确保所有这些条目都与数据库名称无关?
答案 0 :(得分:1)
不幸的是,在DataSet Designer中使用设计器/查询构建器时,您无法阻止数据库名称或上下文被添加到SQL对象名称之前。
您可以通过向导为每个查询手动删除它们。右键单击相关查询,然后选择"配置..."。在打开的向导中,删除[pfttestbench]和任何其他前置数据(例如[dbo])而不使用查询生成器(退出时将重新添加它们)。 删除上下文信息后,点击“完成”按钮。
要确认这是否有效,您将要强制重新创建* .Designer.cs文件,否则您将看不到更改。为此,右键单击解决方案资源管理器中的.xsd文件,然后选择"运行自定义工具"。完成后,您可以像最初一样打开* .Designer.cs文件,或查看您修改的查询的CommandText属性以确认已删除完全限定名称上下文。