如何在dapper中獲取剛插入行的ID


二話不說;

1、先建立個表


CREATE TABLE [dbo].[UserInfo](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [UserName] [nchar](10) NULL,
    [UserPass] [nchar](10) NULL,
    [RegTime] [datetime] NULL,
    [Email] [nchar](10) NULL,
CONSTRAINT [PK_UserInfo] PRIMARY KEY CLUSTERED
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

2、搭建一個dapper環境  就是引用下 dapper.net 就可以了

3、

c#代碼

SqlConnection connection = new SqlConnection( "Data Source=.;Initial Catalog=EFFristModel;uid=sa;password=sql;");
          connection.Open();
          UserInfo userinfo = new UserInfo();
          userinfo.Email = "C#本質論";
          string query = "INSERT INTO UserInfo(Email)VALUES(@Email);SELECT @@identity;UPDATE UserInfo SET Email='xx' WHERE Email=@Email";
          //對對象進行操作

          Response.Write( connection.ExecuteScalar<int>(query, userinfo));

這樣正好可以獲取到 @@identity

 

 

注意: 這樣寫是可以的。但是在高並發的環境中 可能得到的@@identity會不是你想要的結果

你在新增,別人也可能也在新增 。你獲取的時候就是 獲取到最后插入的那條記錄的ID.

所以 我們要修改一下

SELECT @@identity

修改為

select @id= SCOPE_IDENTITY();

這樣就保證獲取的是正確的ID.

詳情 請查看下SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY返回插入到標識列中的值,但作用域不同 - zc19820620的專欄 - 博客頻道 - CSDN.NET

這樣就萬事大吉了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM