使用 LINQ to SQL 获取 ID

Posted

技术标签:

【中文标题】使用 LINQ to SQL 获取 ID【英文标题】:Get Id using LINQ to SQL 【发布时间】:2010-09-27 02:23:18 【问题描述】:

如何在将记录保存到数据库后获取记录 ID。我的意思是实际上是这样的。

我有 Document 类(它是来自 DataBase 的实体),我创建了一个类似

的实例
Document doc = new Document() title="Math",name="Important";
dataContext.Documents.InsertOnSubmit(doc);
dataContext.SubmitChanges();

我想要的是检索它位于数据库中的 id 值(docId),它的主键也是自动编号。一件事,系统上会有很多用户,并且会提交大量这样的记录。

提前谢谢大家:)

【问题讨论】:

我认为您应该将其取消标记为社区 wiki。 好的,但我不知道 Community Wiki 到底是什么意思? 【参考方案1】:

运行 .SubmitChanges 后,应该使用在数据库上创建的 Id 填充 doc.docId。

【讨论】:

【参考方案2】:

就像每个人都说你应该能够做这样的事情:

Document doc = new Document() title="Math",name="Important";
dataContext.Documents.InsertOnSubmit(doc);
dataContext.SubmitChanges();

然后通过以下方式获取 ID:

int ID = doc.docId;

【讨论】:

【参考方案3】:

默认情况下,Linq to SQL 会进行更改跟踪。因此,一旦插入行,您的对象就会更新并添加到数据上下文中。您的文档集合中将有一个新的有效行。

This Charlie Calvert 的博客文章有一些不错的 Linq 示例可供下载。我保留它仅供参考。

【讨论】:

以上是关于使用 LINQ to SQL 获取 ID的主要内容,如果未能解决你的问题,请参考以下文章

使用 Linq to sql 从两个表中获取所有数据

如何在linq to sql中使用orderby和partition by获取第一行

Linq To EF (添加记录后获取添加的自增ID和叫“ID”的列不是自增列不让插入的问题)

如何通过 LINQ to Sql 结果上的数据对分组进行 lambda?

Linq to Sql - 具有父表关系的双重分组

LINQ TO SQL