首页 > 移动平台 > 详细

如何在dapper中获取刚插入行的ID

时间:2015-11-19 18:24:37      阅读:413      评论:0      收藏:0      [点我收藏+]

二话不说;

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

这样就万事大吉了。

如何在dapper中获取刚插入行的ID

原文:http://www.cnblogs.com/jixinyu12345/p/4978066.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!