首页 新闻 赞助 找找看

请教大家个问题:Dapper如何返回插入后的自增Id

0
悬赏园豆:10 [待解决问题]

Execute()方法应该是返回受影响的行数,想知道怎么获取自增的Id值。

如能给出简单示例,感激不尽。

哪个昵称没被用的主页 哪个昵称没被用 | 初学一级 | 园豆:5
提问于:2017-11-14 20:48
< >
分享
所有回答(3)
0

用query查询方式.或者那个返回第一行第一列的方法.

在sql中用inserted.id输出

吴瑞祥 | 园豆:29449 (高人七级) | 2017-11-14 21:15
2

在SQL,Insert语句后,跟上返回自增ID的语句。

有三种写法,这是其中两种:

Execute方式:

var sql = "INSERT INTO [MesTest] ([Msg]) VALUES('ss');SELECT @id=SCOPE_IDENTITY()";
using (var db = Database.DbService)
{
    var p = new DynamicParameters();
    p.Add("@ID", dbType: DbType.Int32, direction: ParameterDirection.Output);
    var i = db.Execute(sql,p);
    var i1 = p.Get<int>("@ID");
   
    Assert.Inconclusive(i1.ToString());
}

 Query方式

var sql = @"INSERT INTO [MyTable] ([Stuff]) VALUES (@Stuff);";
sql += "SELECT CAST(SCOPE_IDENTITY() as int)";
var mytable = new MyTable();
mytable.Stuff = "test";

var id = connection.Query<int>(sql, mytable).FirstOrDefault();

ExecuteScalar方式,就不再叙了。

 

以上的SQL语句,仅作参考,在不同数据库下,SQL语法略有差异,获取自增ID方法也各自不同。

VAllen | 园豆:94 (初学一级) | 2017-11-14 22:16
-2

参考:https://www.cnblogs.com/davidwang456/p/4836327.html

金琥 | 园豆:2605 (老鸟四级) | 2017-11-15 13:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册