1

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

假设我有一个包含 3 列的表,GUID, FirstName, LastName。我需要插入一条新记录,然后取回刚刚生成的 GUID。问题是名字和姓氏经常重复。我不太确定如何完成

这是我尝试过的,我知道以下内容不起作用,因为我并没有真正告诉它要选择哪一列,而且我不知道如何告诉它:

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();
}

我得到的错误是

序列不包含任何元素

4

2 回答 2

2

如果您只想要插入的 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
于 2016-08-25T18:07:42.960 回答
0

Dapper Contrib 需要一个自动生成的 ID,它不能是一个 GUID,你不能传递一个预先生成的 Guid

于 2020-12-04T19:46:52.970 回答