插入 Guid 并使用 dapper 检索值
Insert Guid and retrieve value with dapper
我正在尝试将一条记录插入我的数据库并检索它刚刚添加的 GUID。
假设我有一个包含 3 列的 table,GUID
、FirstName
、LastName
。我需要插入一条新记录,然后取回刚刚生成的 GUID。问题是名字和姓氏经常重复。我不太确定如何完成
这是我尝试过的方法,我知道下面的内容不会起作用,因为我并没有真正告诉它 select 返回哪一列,而且我不确定如何告诉它:
var query = @"INSERT INTO MyTable(GUID, FirstName, LastName)
SELECT
@GUID, @FirstName, @LastName);
using (var oConn = CreateConnection())
{
var test = oConn.Query<string>(query, new
{
GUID = Guid.NewGuid(),
"John",
"Doe"
}).Single();
}
我得到的错误是
Sequence contains no elements
如果您只需要插入的 Guid,为什么不将其存储在代码中的局部变量中并在需要时使用它?
我在您的代码中也看到了一些错误。下面的代码已更正并且应该可以工作。
var guid = Guid.NewGuid();
var query = @"INSERT INTO
MyTable (GUID, FirstName, LastName) values ( @GUID, @FirstName,@LastName);";
using (var conn = CreateConnection())
{
conn.Execute(query, new { @GUID = guid, @FirstName= "John", @LastName= "Scott" });
}
// You can use the value in guid variable now. It will be Id you inserted just now
Dapper Contrib 需要一个自动生成的 ID,它不能是 GUID,您不能传递预生成的 Guid
我正在尝试将一条记录插入我的数据库并检索它刚刚添加的 GUID。
假设我有一个包含 3 列的 table,GUID
、FirstName
、LastName
。我需要插入一条新记录,然后取回刚刚生成的 GUID。问题是名字和姓氏经常重复。我不太确定如何完成
这是我尝试过的方法,我知道下面的内容不会起作用,因为我并没有真正告诉它 select 返回哪一列,而且我不确定如何告诉它:
var query = @"INSERT INTO MyTable(GUID, FirstName, LastName)
SELECT
@GUID, @FirstName, @LastName);
using (var oConn = CreateConnection())
{
var test = oConn.Query<string>(query, new
{
GUID = Guid.NewGuid(),
"John",
"Doe"
}).Single();
}
我得到的错误是
Sequence contains no elements
如果您只需要插入的 Guid,为什么不将其存储在代码中的局部变量中并在需要时使用它?
我在您的代码中也看到了一些错误。下面的代码已更正并且应该可以工作。
var guid = Guid.NewGuid();
var query = @"INSERT INTO
MyTable (GUID, FirstName, LastName) values ( @GUID, @FirstName,@LastName);";
using (var conn = CreateConnection())
{
conn.Execute(query, new { @GUID = guid, @FirstName= "John", @LastName= "Scott" });
}
// You can use the value in guid variable now. It will be Id you inserted just now
Dapper Contrib 需要一个自动生成的 ID,它不能是 GUID,您不能传递预生成的 Guid