Вставьте Guid и получите значение с помощью dapper
Я пытаюсь вставить запись в свою базу данных и получить только что добавленный 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();
}
Я получаю ошибку
Последовательность не содержит элементов
1 ответ
Если вам нужен только тот 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 требуется автоматически сгенерированный идентификатор, это не может быть GUID, и вы не можете передать предварительно сгенерированный Guid