插入 Guid 并使用 dapper 检索值

Insert Guid and retrieve value with dapper

我正在尝试将一条记录插入我的数据库并检索它刚刚添加的 GUID。

假设我有一个包含 3 列的 table,GUIDFirstNameLastName。我需要插入一条新记录,然后取回刚刚生成的 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