1

データベースにレコードを挿入し、追加したばかりの GUID を取得しようとしています。

GUID、、、の 3 つの列を持つテーブルがあるとし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 に答える