我可以在 LINQ 插入后返回“id”字段吗?
Posted
技术标签:
【中文标题】我可以在 LINQ 插入后返回“id”字段吗?【英文标题】:Can I return the 'id' field after a LINQ insert? 【发布时间】:2008-09-22 09:10:02 【问题描述】:当我使用 Linq-to-SQL 将对象输入到数据库中时,我可以在不进行另一个数据库调用的情况下获取我刚刚插入的 id 吗?我假设这很容易,我只是不知道如何。
【问题讨论】:
【参考方案1】:将对象提交到数据库后,对象会在其 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;
【讨论】:
也许您需要将您的字段设置为“数据库生成”和“插入时更新”才能正常工作。 我如何在 c# 4.0 中做到这一点?没有 insertonsubmit 或 submitchanges?? @Confused Programmer - 是一样的,但是有 Context.Collection.Add() 和 SaveChanges() 行为可能是特定于数据库的。使用 SQLite 时,这不会导致填充 ID。 我以前用过这个,但是如何使它在多关系表上工作?我是否必须先保存主表,然后从两者中获取 ID,然后将两个 id 保存到关系表中?【参考方案2】:插入时生成的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
【讨论】:
【参考方案3】:试试这个:
MyContext Context = new MyContext();
Context.YourEntity.Add(obj);
Context.SaveChanges();
int ID = obj._ID;
【讨论】:
以上是关于我可以在 LINQ 插入后返回“id”字段吗?的主要内容,如果未能解决你的问题,请参考以下文章