[ADO.NET] 何謂 RowState
1.RowState 屬性 是記錄使用者在離線狀態下對DataRow所進行的變動,它可表示DataTable由資料庫取出後到目前為止是否被變更,DataRowState 列舉型別如下圖:
2.DataRowVersion 列舉型別 是用來記錄DataRow所包含的版本,成員如下圖:
下圖為MSDN所敘述的版本變更行為:
3.若是呼叫DataTable的AcceptChanges方法或是DataRow的AcceptChanges方法,都會將所有RowState狀態為 Added 和 Modified 的資料列變更為 Unchanged,而為Deleted 的資料列則會被移除。
4.DataRow的SetAdded方法可變更RowState為Added,SetModified可變更RowState為Modified
5.觀察RowState的變化,首先建立一個DataTable,再針對DataTable進行新增、修改、刪除等動作,觀察其變化
5-1.使用北風資料庫建立DataTable
5-2.執行"新增",其程式是使用DataRowCollection的Add方法或DataRow的NewRow方法新增一個列。
5-3.依狀態條件取得DataRowVersion 的值。取得DataRow的用法請看DataRow.Item屬性
5-4.觀察其結果,新增的資料,RowState為Added
5-5.執行"存檔",程式是執行AcceptChanges方法,可以發現RowState為Unchanged
5-6.執行"修改",將"霹靂無敵"修改成"修改值",可發現RowState為Modified,且DataRow的Current(目前)與Original(原始)版本不同
5-7.執行"刪除",可發現可發現RowState為Deleted,因被刪除所以也看不到資料。
基本上由範例的左邊按到右邊,即可觀察變化
6.DataRow的HasVersion方法判斷是否有指定的版本。由下程式我們可以判斷每一個DataRow的RowState至少都有Current、Default
7.DataRow的RejectChanges及DataTable的RejectChanges方法,兩個方法都可以還原呼叫AcceptChanges方法以前的資料
另有一疑問
DataRow的多載在MSDN中的哪篇有敘述呢?我找半天卻找不到,應該是我不會找,有哪位好心人可以跟我講(提供連結)
範例下載
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2025 .NET