关于DataRow的RowState和RowVersion

关于DataRow的RowState和RowVersion

1)什么是DataRow's RowState and RowVersion?
      DataRow's RowState是数据行的状态,RowVersion是数据行的版本。
   RowState and Row Version are both enum object.
   The codesnap is the following detail:

DataRowState
RowVersion

2) 究竟RowState和RowVersion有什么关系呢?又个有什么用途呢?
  RowState和RowVersion有一个对照关系(或许描述有点不恰当),
  关系如下所示: 

RowState RowVersion
Added Current(Default)
Modified Current(Default)
Original 
Unchanged Current(Default)
Original(Default)
Detached Proposed(Default)
Deleted Original (Default)
For unchanged rowstate, default row version is also Proposed,从下面的例子中,你能看到。
从上面的表格可以看出,一个数据行有版本的控制,为什么要有这版本控制呢?
A)用于DataSet和DataTable内部实现,
B)
在用DataAdapter跟DB交互时(Call Update(DataSet)),用什么版本赋值。
当然只是在DBParameter上设置SourceVersion

DataAdapter

 

DBParameter

3) 在DataTable.Select()和DataView.RowStateFilter区别,
public DataRow[] Select (
string filterExpression,
string sort,
DataViewRowState recordStates
)
Select
public Object this [
DataColumn column,
DataRowVersion version
] { get; }

public DataViewRowState RowStateFilter { get; set; }
其实在性能方面,DataView比DataTable好,DataView use index.
还是回到这个主题上吧,
DataTable的方法会返回所有的版本的数据行,而DataView仅返回相关的版本。
请看下面的例子:
 
Example

当直接访问删除的数据时,要用databview,否则会出错:
Deleted row information cannot be accessed through the row.
dataView[i].Row[1,DataRowVersion.Original]
dataView[i]["name"]
也不能用dataView[i].Row[1,DataRowVersion.Default],
对于Unchanged's RowState,如果Call BeginEdit(),没有call EndEdit(),
运行上面的例子,就知道答案了。

(4)在ADO.NET 2.0中,DatRow添加了几个新的方法:
SetAdded()and SetModified()
 
posted @ 2007-12-20 10:00  Winner.Net(2007)  阅读(1963)  评论(0编辑  收藏  举报