【发布时间】:2012-05-22 11:54:48
【问题描述】:
在 ADO.NET 中是否有办法在执行 INSERT 语句后检索自动生成的 ID?我知道 Sql Server 的 SELECT @@IDENTITY 和 MySQL 的 SELECT last_insert_id(),但我需要的是一种独立于数据库的方式来检索 ID。
【问题讨论】:
标签: ado.net
在 ADO.NET 中是否有办法在执行 INSERT 语句后检索自动生成的 ID?我知道 Sql Server 的 SELECT @@IDENTITY 和 MySQL 的 SELECT last_insert_id(),但我需要的是一种独立于数据库的方式来检索 ID。
【问题讨论】:
标签: ado.net
我认为没有办法存在,因为获取最后插入的 id 的命令是特定于供应商的。您可以做的是合并查询以在您的主查询中获取最后插入的 id(我理解这不是您想要的),然后编写一个 C# 函数来读取它,而不考虑您的数据库(不依赖于特定的 ADO.NET 类型但在接口IDbDataReader或IDbCommand上指定的方法上)
否则,您将不得不依赖一些 ORM 解决方案,例如实体框架,它会为您处理所有这一切,让您免于手动获取最后插入的 id 的麻烦,尽管实现将是非常特定于 db 的。你可以在这里看到一个很好的讨论:
getting identity row value using ADO.NET Entity
您可以看到this link,这将使您对直接访问依赖数据适配器的记录有一些了解(但我不喜欢它)。
【讨论】:
usings 的事实,这对于处理一次性用品的层中的干净代码非常重要!