当前位置:
首页 >
理解DataSet的数据缓存机制
发布时间:2025/7/14
72
豆豆
生活随笔
收集整理的这篇文章主要介绍了
理解DataSet的数据缓存机制
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
虽然在以前的开发中经常使用DataSet类,但是重来没有涉及到数据缓存机制这块内容。今天看了一下,也算是做点总结。
在理解数据缓存机制之前需要理解DataRow的两个概念,即行状态和行版本。行状态就是指DataRow的RowState属性,它可以的取值有Added、Deleted、Detached、Modified、Unchanged(含义可以在MSDN上查到),它用来描述数据行的状态,比如在删除某一行后,此行并不会本真正的被删除,因此它的行状态是Deleted;行版本有四种取值,分别是Current、Default、Original、Proposed,在对某一行的数据进行了修改后,该行数据就有了两个版本,分别是Original和Current。在调用AcceptChanges()或RejectChanges()方法之后,数据行的状态就会变为Unchanged。
现在应该可以理解所谓的数据缓存机制了,它是指在添加、删除、修改数据后,DataSet中的数据并不会真正的被更改,直到调用AcceptChanges()后,这些数据才会被真正的更改。
下边给出一段代码说明含义。
//前边的代码实现了用DataAdapter填充DataSet类的实例:ds
DataTable tbl_Customers = ds.Table["Customers"];
DataRow myRow;
if (tbl_Customers.Rows.Count>0)
{
myRow = tbl_Customers.Rows[0];
//输出修改前的行状态和行版本
Debug.WriteLine("修改前");
Debug.WriteLine(" 行状态是:" + myRow.RowState.ToString());
Debug.WriteLine(" 该行CompanyName字段Original行状态是:" + myRow["CompanyName",DataRowVersion.Original]);
Debug.WriteLine(" 该行CompanyName字段Current行状态是:" + myRow["CompanyName",DataRowVersion.Current]);
//修改操作
myRow["CompanyName"] = "cnblogs.com";
//输出修改后的行状态和行版本
Debug.WriteLine("修改后");
Debug.WriteLine(" 行状态是:" + myRow.RowState.ToString());
Debug.WriteLine(" 该行CompanyName字段Original行状态是:" + myRow["CompanyName",DataRowVersion.Original]);
Debug.WriteLine(" 该行CompanyName字段Current行状态是:" + myRow["CompanyName",DataRowVersion.Current]);
//确认修改
myRow.AcceptChanges();
//输出确认修改后的行状态和行版本
Debug.WriteLine("确认修改后");
Debug.WriteLine(" 行状态是:" + myRow.RowState.ToString());
Debug.WriteLine(" 该行CompanyName字段Original行状态是:" + myRow["CompanyName",DataRowVersion.Original]);
Debug.WriteLine(" 该行CompanyName字段Current行状态是:" + myRow["CompanyName",DataRowVersion.Current]);
}上边代码的运行结果如下:
输出结果修改前:
行状态是:Unchanged
该行CompanyName字段Original版本值是:Alfreds Futterkiste
该行CompanyName字段Current版本值是:Alfreds Futterkiste
修改后:
行状态是:Modified
该行CompanyName字段Original版本值是:Alfreds Futterkiste
该行CompanyName字段Current版本值是:cnblogs.com
确认修改后:
行状态是:Unchanged
该行CompanyName字段Original版本值是:cnblogs.com
该行CompanyName字段Current版本值是:cnblogs.com由于DataSet的这一缓存机制,因此,在修改完毕后必须使用AcceptChages()确认修改或使用RejectChanges()拒绝修改才能真正生效!
转载于:https://www.cnblogs.com/tangself/archive/2010/12/20/1911555.html
总结
以上是生活随笔为你收集整理的理解DataSet的数据缓存机制的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: NHibernate VS .NET T
- 下一篇: 某石油公司100-500人办公网络方案设