当我插入新记录时,如何获得主键值?

har*_*alb 7 linq-to-sql

我正在使用LINQ-to-SQL类.它有一个方法object.InsertOnSubmit().但它返回void,所以我可以在插入记录后获得主键值.

我想要最近插入的记录的主键值.

egl*_*ius 8

是(假设它是一个身份字段).

单独调用InsertOnSubmit不会将插入发送到db.您需要调用SubmitChanges以便将当前datacontext实例中的任何更改发送到db.

调用SubmitChanges后,可以从调用InsertOnSubmit时使用的实例访问值.Linq to sql将在执行插入时为您填充这些值(在SubmitChanges期间发生)

请查看此示例:http://msdn.microsoft.com/en-us/vbasic/bb737920.aspx#dynid


ale*_*emb 7

简而言之,您不需要.对象本身已更新.

    public void Add(Person person)
    {
        using (MyEntities context = new MyEntities())
        {
            Context.Persons.InsertOnSaveChanges(person);
            Context.SaveChanges();
        }
    }

    public void Foo()
    {
        Person p = new Person { name = "John", age = 20 }
        Add(p);
        Int32 id = p.id;  // id contains the newly inserted object's id
    }
Run Code Online (Sandbox Code Playgroud)