Как я могу вручную / программно создать DataRow?

База кода моего проекта имеет устаревший метод, который принимает DataRow в качестве параметра, для которого я хотел бы создать метод модульного тестирования.

Как я могу вручную создать объект DataRow для передачи в метод? System.Data.DataRow У класса нет открытого конструктора.

2 ответа

Решение

DataRow можно создать, создав новый экземпляр DataTable, добавив столбцы в DataTable, соответствующие "ключам", которые должны иметь DataRow, и затем вызвав NewRow() на DataTable. Например:

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";

Следует отметить, что если модульному тесту необходимо было применить ограничения типа на DataColumnCollection (Столбцы) для DataTable - вы можете использовать перегруженный конструктор DataColumn класс, чтобы включить ожидаемый 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.
Другие вопросы по тегам