困惑考慮以下,過於簡單化DataTable
對象:上DataSet.Merge和RowState的
Id
是一個自動增量的整數,作用在表的主鍵,而Text
是一個簡單的String
類型列中。
現在考慮下面的代碼:
private static void Main(string[] args)
{
var dataSet = new TestingDataSet();
var row = dataSet.TestingTable.AddTestingTableRow("First");
dataSet.AcceptChanges();
var copiedDataSet = dataSet.Copy();
Console.WriteLine("Row after initialization:");
Console.WriteLine();
Console.WriteLine("Text : " + row.Text);
Console.WriteLine("State: " + row.RowState.ToString());
Console.WriteLine();
row.Text = "Modifications";
Console.WriteLine("Row after changes:");
Console.WriteLine();
Console.WriteLine("Text : " + row.Text);
Console.WriteLine("State: " + row.RowState.ToString());
Console.WriteLine();
dataSet.Merge(copiedDataSet, false);
Console.WriteLine("Row after merge:");
Console.WriteLine();
Console.WriteLine("Text : " + row.Text);
Console.WriteLine("State: " + row.RowState.ToString());
Console.WriteLine();
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
該代碼產生以下結果:
來看最後RowState
值。它被修改。怎麼來的?複製的數據集實例沒有更改,我明確將preserveChanges
參數設置爲false
。所以現在不應該考慮這個行Unchanged
?
This MSDN article指出,當行合併時,它們的狀態也會跟隨。文章是錯誤的,或者是我的代碼中的東西是?