我正在使用LINQ-to-SQL类。它有一个方法object.InsertOnSubmit()。但它返回无效,所以我可以在插入记录后获得主键值。当我插入新记录时,如何获得主键值?
我想要最近插入记录的主键值。
我正在使用LINQ-to-SQL类。它有一个方法object.InsertOnSubmit()。但它返回无效,所以我可以在插入记录后获得主键值。当我插入新记录时,如何获得主键值?
我想要最近插入记录的主键值。
是(假设它是一个标识字段)。
独自调用InsertOnSubmit不会将插入发送到数据库。您需要调用SubmitChanges以便将当前datacontext实例中的任何更改发送到db。
调用SubmitChanges之后,可以访问调用InsertOnSubmit时使用的实例中的值。 http://msdn.microsoft.com/en-us/vbasic/bb737920.aspx#dynid
如果模型设置正确,应该在受影响的对象(刚插入的对象)上自动设置PK。
HTH。
赛斯
你插入记录后调用您的数据上下文的SubmitChanges()?除非你这样做,否则变更集不会被评估。
调用InserOnSubmit()后,主键值设置为youe表对象中的相应字符。您只需访问该属性即可获取主键。
总之,你并不需要:LINQ to SQL的执行插入(其中的SubmitChanges期间发生)
检查这个例子时,将填充你的价值观。对象本身被更新。
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
}
这里是如何工作的一个例子:
var dc = new MyDataContext();
var cust = new Customer{FirstName="John", LastName="Smith"};
dc.Customer.InsertOnSubmit(cust);
dc.SubmitChanges();
//after SubmitChanges(), the Id is filled from the database
var customerPrimaryKey = cust.Id;
dc.Object.InsertOnSubmit(newObj); dc.SubmitChanges(); 在调用上述函数之后,Harshal会要求获取数据库在插入该记录时设置的ID。 – Vikas 2009-04-25 06:34:35