如何手动/以编程方式创建 DataRow?
How can I manually / programmatically create a DataRow?
我的项目的代码库有一个遗留方法,它将 DataRow 作为参数,我想为其创建一个单元测试方法。
如何手动创建 DataRow 对象以传递给该方法? System.Data.DataRow
class 没有面向 public 的构造函数。
DataRow 可以通过创建一个新的DataTable 实例,在DataTable 中添加DataRow 需要的“键”对应的列,然后在DataTable 上调用NewRow()
来创建。例如:
DataTable usersTable = new DataTable();
usersTable.Columns.Add("FirstName");
usersTable.Columns.Add("LastName");
usersTable.Columns.Add("Email");
DataRow userRow = usersTable.NewRow();
userRow["FirstName"] = "Elmer";
userRow["LastName"] = "Example";
userRow["Email"] = "elmer@example.com";
usersTable.Rows.Add(userRow);
您应该注意,如果单元测试需要对 DataTable
的 DataColumnCollection
(列)强制执行类型约束 - 您可以使用 DataColumn
class 以包括预期的 Type
.
var dt = new DataTable();
var dc = new DataColumn("Age", typeof(int));
dt.Columns.Add(dc);
var dr = dt.NewRow();
dr["Age"] = "test"; // throws an ArgumentException
//Input string was not in a correct format. Couldn't store<test> in Age Column. Expected type is Int32.
//should it succeed
dt.Rows.Add(dr);
我的项目的代码库有一个遗留方法,它将 DataRow 作为参数,我想为其创建一个单元测试方法。
如何手动创建 DataRow 对象以传递给该方法? System.Data.DataRow
class 没有面向 public 的构造函数。
DataRow 可以通过创建一个新的DataTable 实例,在DataTable 中添加DataRow 需要的“键”对应的列,然后在DataTable 上调用NewRow()
来创建。例如:
DataTable usersTable = new DataTable();
usersTable.Columns.Add("FirstName");
usersTable.Columns.Add("LastName");
usersTable.Columns.Add("Email");
DataRow userRow = usersTable.NewRow();
userRow["FirstName"] = "Elmer";
userRow["LastName"] = "Example";
userRow["Email"] = "elmer@example.com";
usersTable.Rows.Add(userRow);
您应该注意,如果单元测试需要对 DataTable
的 DataColumnCollection
(列)强制执行类型约束 - 您可以使用 DataColumn
class 以包括预期的 Type
.
var dt = new DataTable();
var dc = new DataColumn("Age", typeof(int));
dt.Columns.Add(dc);
var dr = dt.NewRow();
dr["Age"] = "test"; // throws an ArgumentException
//Input string was not in a correct format. Couldn't store<test> in Age Column. Expected type is Int32.
//should it succeed
dt.Rows.Add(dr);