如何在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
这样就万事大吉了。
如何在dapper中获取刚插入行的ID的更多相关文章
- mysql 获取刚插入行id汇总
mysql 获取刚插入行id汇总 我们在写数据库程序的时候,经常会需要获取某个表中的最大序号数, 一般情况下获取刚插入的数据的id,使用select max(id) from table 是可以的.但 ...
- Mysql 中获取刚插入的自增长id的值
insert into user (username,password) VALUES ('); //获取刚插入的自增长id的值 select last_insert_id(); 在MySQL中,使用 ...
- 数据库:mysql 获取刚插入行id[转]
我们在写数据库程序的时候,经常会需要获取某个表中的最大序号数, 一般情况下获取刚插入的数据的id,使用select max(id) from table 是可以的.但在多线程情况下,就不行了. 下面介 ...
- Java中获取刚插入数据库中的数据Id(主键,自动增长)
public int insert(String cName, String ebrand, String cGender) { String sql = "insert into Clot ...
- SQL Server output子句用法 output inserted.id 获取刚插入数据的id
--插入数据,并返回刚刚插入的数据id INSERT INTO [soloreztest] ([name]) output inserted.id VALUES ('solorez') --执行结果: ...
- YII获取刚插入数据的id主键
单条数据时model->attributes['id']; 循环插入时使用 Yii::app()->db->getLastInsertID() 获取 循环插入时需要每次插入后重置 m ...
- yii2框架获取刚插入数据库的id (原创)
$insert_id = $UserModel->attributes['id'];
- 如何在mssql中获取最新自增ID的值
@@IDENTITY 返回最后一个插入 IDENTITY 的值,这些操作包括:INSERT, SELECT INTO,或者 bulk copy.如果在给没有 IDENTITY 列的其他表插入记录,系统 ...
- mysql获取刚插入(添加)记录的自动编号id
我们在写数据库程序的时候,经常会需要获取某个表中的最大序号数, 一般情况下获取刚插入的数据的id,使用select max(id) from table 是可以的.但在多线程情况下,就不行了. 下面介 ...
随机推荐
- 去model化开发
前言 去model化是一种框架设计上的做法,其中的model并不是指架构中的model层,套用Casa大神博客中的原文就是: model化就是使用数据对象,去model化就是不使用数据对象. 常见的去 ...
- javascript笔记04:let语句 和 yield语句 和 with语句
1.yield语句: <script type="application/javascript; version=1.7"> function generator() ...
- 通过代码设置button中文字的对齐方式
// button.titleLabel.textAlignment = NSTextAlignmentLeft; 这句无效 button.contentHorizontalAlignment = U ...
- gcc的基础知识
GCC(GNU Compiler Collection,GNU编译器集合)是一套由GNU工程开发的支持多种编程语言的编译器. 基本用法 在使用Gcc编译器的时候,我们必须给出一系列必要的调用参数和文件 ...
- Linux忘记mysql的root密码的解决办法
1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库. 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的 状态下,其他的用户也可以任意地登录 ...
- [记录] javascript 对象中使用setTimeout
参考:Javascript对象中关于setTimeout和setInterval的this介绍 使用最后一个方法终于弄好了,简直了,在对象中使用setTimeout原来是这样的 做的是分钟倒计时,倒数 ...
- 反汇编windows htonl()函数
因为自己在系统内核写网络程序有时候需要调用htons htonl 这样的函数进行转换,但由于内核只能调用c运行库,别的API不能调用.自己也接触过一点汇编,从来没有去学过.看过老码识途这本书前几章,如 ...
- dapper关联关系查询小测试
测试实体类(表结构) public class User { public int user_id { get; set; } public string user_name { get; set; ...
- 05顺序队列_Queue--(栈与队列)
#include "stdio.h" #include "stdlib.h" #include "io.h" #include " ...
- android 登陆案例_sd卡
代码: <?xml version="1.0"?> -<LinearLayout android:paddingTop="@dimen/activity ...