最终目标是创建一个数据库,其中包含我们所有的自动化测试及其添加日期。我们在 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 填写。
有没有人有关于如何解决这个问题的想法,或者通过使用不同的方法让它变得更好?