在DataRow的不同 RowState下取不同 RowVersion值的情况

本文探讨了DataRow的RowState和RowVersion概念,详细介绍了不同状态下的版本表现,并通过代码示例展示了如何获取各种状态下的版本值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
[Flags]
public enum DataRowState
{
    Added 
= 4,
    Deleted 
= 8,
    Detached 
= 1,
    Modified 
= 0x10,
    Unchanged 
= 2
}

 

RowVersion
public enum DataRowVersion
{
    Current 
= 0x200,
    Default 
= 0x600,
    Original 
= 0x100,
    Proposed 
= 0x400
}

 

2)在DataRow的不同RowState下取不同RowVersion的值会是怎样的哪,我们通过下面的代码进行测试:

ContractedBlock.gif ExpandedBlockStart.gif Code
 1using System;
 2using System.Collections.Generic;
 3using System.ComponentModel;
 4using System.Data;
 5using System.Drawing;
 6using System.Text;
 7using System.Windows.Forms;
 8
 9namespace DataRowRowStateAndRowVersion
10ExpandedBlockStart.gifContractedBlock.gif{
11    public partial class Form1 : Form
12ExpandedSubBlockStart.gifContractedSubBlock.gif    {
13        public Form1()
14ExpandedSubBlockStart.gifContractedSubBlock.gif        {
15            InitializeComponent();
16        }

17
18        private void button1_Click(object sender, EventArgs e)
19ExpandedSubBlockStart.gifContractedSubBlock.gif        {
20            DataTable dt = new DataTable();
21            DataColumn dc = new DataColumn("value",typeof(string));
22            dt.Columns.Add(dc);
23            dc = new DataColumn("name",typeof(string));
24            dt.Columns.Add(dc);
25
26            //0
27            DataRow dr = dt.NewRow();
28            dr["value"= "value";
29            dr["name"= "Deleted";
30            dt.Rows.Add(dr);
31
32            //1
33            dr = dt.NewRow();
34            dr["value"= "value";
35            dr["name"= "Modified";
36            dt.Rows.Add(dr);
37
38            //2
39            dr = dt.NewRow();
40            dr["value"= "value";
41            dr["name"= "Unchanged";
42            dt.Rows.Add(dr);
43
44            dt.AcceptChanges();
45
46            dt.Rows[0].Delete();
47            dt.Rows[1]["value"= "modified";
48
49            //3
50            dr = dt.NewRow();
51            dr["value"= "value";
52            dr["name"= "Added";
53            dt.Rows.Add(dr);
54
55            //4
56            dr = dt.NewRow();
57            dr["value"= "value";
58            dr["name"= "Detached";
59        }

60    }

61}

 

3) 测试结果:

4)结果分析:

DataRow在Deleted RowState状态下只有Original DataRowVersion的值可以访问,访问其他版本的的值都会引发异常。

只有在Detached状态下可以访问Proposed和Default版本的值,其他状态下访问Proposed的值将引发异常。

Current版本的值在Deleted和Detached状态下访问会引发异常。

5)相关链接

关于DataRow的RowState和RowVersion

 

 

转载于:https://www.cnblogs.com/ThinkF/archive/2008/10/11/1308465.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值