У меня есть две таблицы данных с идентичной схемой, и я хочу получить различия между ними. Я пытаюсь применить Merge
для этого. Код читается проще, поэтому маленький пример:
//Create first datatable
var o = new DataTable{Columns = { "id", "value"}};
//Add a datarow
o.Rows.Add(1, "test");
//Set PK
o.PrimaryKey = new[]{o.Columns[0]};
//Set RowState to Unchanged
o.AcceptChanges();
//Create copy of first datatable
var m = o.Copy();
//Change a value
m.Rows[0]["value"] = "test2";
//Set RowState to Unchanged
m.AcceptChanges();
//Merge
o.Merge(m);
Вплоть до слияния все работает как положено; У меня есть две таблицы данных, каждая с одной строкой с одинаковыми id
, но разными value
("test" и "test2").
После слияния я ожидал, что в datatable o
будет одна строка с id = 1 и значением = "test2". Это правда. Я также ожидал, что в одной строке будет RowState="Modified"
. Это не правда, у него есть RowState="Unchanged"
. Почему это?
Я прочитал пару ответов на широко похожие вопросы, которые вы должны называть EndEdit()
в каждой строке. Конечно, это не может быть ответом, в этом вся цель Merge()
, верно?