0

最終的な目標は、すべての自動テストとそれらが追加された日付を含むデータベースを作成することです。DLL のリフレクションを使用して、各プロジェクト、クラス、およびテスト名を取得しています。それをデータテーブルに保存します。そこから、データベースに保存します。データベースに追加のフィールドがあり、デフォルトの SQL 値は GetDate() です。手動で SQL に値を挿入すると、日付フィールドが入力されます。リフレクションから属性を取得するコードが機能し、dataTable に満足しています。

私が期待していたのは、C# exe を毎日実行でき、新しいテストが SQL に追加され、SQL によって生成された時間値とともに既存のテストが同じままになることです。新しいテストを追加したいだけなので、「更新」を使用するとよいと思いました。

次のようにデータテーブルに入力します

DataRow workRow = dt.NewRow();
workRow["Project"] = testProject.GetName().Name;
workRow["TestName"] = method.Name;
workRow["Class"] = method.DeclaringType.Name;
dt.Rows.Add(workRow);

このようにデータベースを更新しようとします

SqlConnection cn = new SqlConnection("Data Source=SomeSqlServer;Initial    Catalog=TestTracking;Integrated Security=SSPI;Network Library=DBNMPNTW;");
SqlDataAdapter dataAdapter = new SqlDataAdapter("SELECT * from Tests", cn);;
SqlCommandBuilder cmdb = new SqlCommandBuilder(dataAdapter);
dataAdapter.Update(ds,"Tests");

SourceColumn Date の dataTable 'tests' に DataColumn Date がないため、無効な操作例外が返されます。これは本当です。日付を無視して、SQL に入力させたい。

これを解決する方法、または別のアプローチを使用して改善する方法についてアイデアを持っている人はいますか?

4

1 に答える 1

-1

SELECT 文字列を変更して、テストからプロジェクト、テスト名、およびクラスのみを選択することができます。3 つのパラメーターを指定して Tests テーブルを更新するストアド プロシージャを作成することもできます。

于 2013-10-16T21:28:40.580 に答える