これは奇妙な質問です、そして私はそれを正しく組み立てたことを望みます。Visual Studio DataSetデザイナーを使用して、プロジェクトをSQLサーバーにリンクするSQLテーブルアダプターを作成しています。接続文字列はODBCエントリを介して行われます。
すべてのテーブルには、更新や挿入などのデフォルトのクエリがあります。dataset.Designer.csファイルでは、これらのコマンドは自動生成されます。これが1つの例です:
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] = ?))";
これがデータベース名にどのように依存するか、およびデータベース名を変更した場合にどのように望ましくないかを確認できます。これで、1つを除くすべてのテーブルでデータベース名が指定されます。そうでない1つのテーブルには、次のような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] = ?)))";
最後の1つは、データベース名に依存しないため、理想的には必要なものです。これが、私が最初にODBCを使用した理由ですが、明らかに私は何か正しいことをしていません。
私の質問は、これらすべてのエントリがデータベース名に依存しないようにするにはどうすればよいですか?