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 回答