插入Guid并使用dapper检索值

时间:2016-08-25 17:49:19

标签: c# sql-server-2008 asp.net-mvc-5 dapper dapper-extensions

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

如果我有一个包含3列的表,GUIDFirstNameLastName,请说。我需要插入一条新记录,然后返回刚刚生成的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();
}

我得到的错误是

  

序列不包含元素

2 个答案:

答案 0 :(得分:3)

如果您只想要插入的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

答案 1 :(得分:0)

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