我可以在 LINQ 插入后返回“ id”字段吗?

当我使用 Linq-to-SQL 将一个对象输入到数据库中时,我是否可以在不进行另一个数据库调用的情况下获得刚刚插入的 id?我想这应该很简单吧,只是不知道怎么做。

110690 次浏览

将对象提交到 db 之后,对象在其 ID 字段中接收一个值。

所以:

myObject.Field1 = "value";


// Db is the datacontext
db.MyObjects.InsertOnSubmit(myObject);
db.SubmitChanges();


// You can retrieve the id from the object
int id = myObject.ID;

当将生成的 ID 插入到正在保存的对象的实例中时(见下文) :

protected void btnInsertProductCategory_Click(object sender, EventArgs e)
{
ProductCategory productCategory = new ProductCategory();
productCategory.Name = “Sample Category”;
productCategory.ModifiedDate = DateTime.Now;
productCategory.rowguid = Guid.NewGuid();
int id = InsertProductCategory(productCategory);
lblResult.Text = id.ToString();
}


//Insert a new product category and return the generated ID (identity value)
private int InsertProductCategory(ProductCategory productCategory)
{
ctx.ProductCategories.InsertOnSubmit(productCategory);
ctx.SubmitChanges();
return productCategory.ProductCategoryID;
}

参考资料: http://blog.jemm.net/articles/databases/how-to-common-data-patterns-with-linq-to-sql/#4

试试这个:

MyContext Context = new MyContext();
Context.YourEntity.Add(obj);
Context.SaveChanges();
int ID = obj._ID;