linq to sql插入操作取回自增的ID

来源:互联网 发布:java mysql 驱动 编辑:程序博客网 时间:2024/04/30 00:52
 

       

首先我们来看一个简单的插入操作:

        TestDataContext dc = new TestDataContext();
        protected void Page_Load(object sender, EventArgs e)
        {
            tbl_User user = new tbl_User();
            user.uname = "xy";
            user.upwd = "111";
            dc.tbl_User.InsertOnSubmit(user);
            dc.SubmitChanges();

            int id = user.uid;
        }

 

int id = user.uid 这句话就能拿到刚刚插入的值!这么神奇,为什么呢?

 

1 首先我们在数据库中对uid设置的时候,就设置它为主键,然后为表示列,自增长,种子是1,增长量是1等。

2 那么我们把数据表拖到VS上来,我们不只要会拖,还要会看。

 

[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_uid", AutoSync=AutoSync.OnInsert,DbType="Int NOT NULL IDENTITY",IsPrimaryKey=true,IsDbGenerated=true)]
  public int uid
  {
   get
   {
    return this._uid;
   }
   set
   {
    if ((this._uid != value))
    {
     this.OnuidChanging(value);
     this.SendPropertyChanging();
     this._uid = value;
     this.SendPropertyChanged("uid");
     this.OnuidChanged();
    }
   }
  }

 

AutoSync=AutoSync.OnInsert 表示在插入式自动同步,

IsDbGenerated表示是数据库自动生成的值。

这样才能那么神奇!懂了吧。

 

我们当然也可以通过可视化视图来设置这些属性。

 

 

如果是纯sql获得这个id就复杂一点,请参看本博客另一篇:

《Sql Server中如何取得刚刚插入的自增长的id值》

http://blog.sina.com.cn/s/blog_67aaf4440100w7ns.html