tryusing System;
using System.Data;class TestID
{
  public static void Main()
  {
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(Int32));
  dt.Columns["ID"].AutoIncrement = true;
    dt.Columns["ID"].AutoIncrementSeed = 1000;
     dt.Columns["ID"].AutoIncrementStep = 10; dt.Columns.Add("X",typeof(String)); DataRow dr = dt.NewRow();
dr["X"] = "123";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["X"] = "456";
dt.Rows.Add(dr);
for (int i=0; i < dt.Rows.Count; i++)
Console.WriteLine(dt.Rows[i]["ID"]);

  }
}

解决方案 »

  1.   

    没有加载数据前
    dt.Columns["ID"].AutoIncrement = true;这个没问题。。为什么在xsd架构中都已经设置AutoIncrement = true;了。。可是用dataset读入。。dr[0]的AutoIncrement 就为 false了怎么回事差载哪里
      

  2.   

    ID自动增加功能本来就不是非常的方便在 SQL Server 中这个问题就比较突出了自增加的数据表在数据库的复制(导入导出)的时候会出问题具体的看情况,反正是会出问题,导出来以后,原来自增的字段,肯定是需要进行调整的。
      

  3.   

    没有加载数据前
    dt.Columns["ID"].AutoIncrement = true;这个没问题。。为什么在xsd架构中都已经设置AutoIncrement = true;了。。可是用dataset读入。。dr[0]的AutoIncrement 就为 false了怎么回事差载哪里
      

  4.   

    我前面说了,导表的时候就会有这样的情况你用 select 语句实现的功能其实就是把数据从数据表里面导入 Dataset 里面也就是一个导表的过程,当然 AutoIncrement = false 了你的 AutoIncrement 是针对在表里面的操作的,不是针对数据集的打个比方,你的数据表里面有一个 ID 是 AutoIncrement 的,一共有十条记录,分别是 0--9,你现在把前面5条(0--4)数据取出到 Dataset 里面,如果DataSet 也是 AutoIncrement 的,你向 DataSet 里面添加一条记录,那么新纪录的 ID 肯定是 5 当你使用数据适配器的update方法的时候,ID=5 的记录其实在数据表里面已经存在了你让数据库怎么处理呢?