Dapper - возвращать GUID, сгенерированный сервером SQL - PullRequest
0 голосов
/ 06 марта 2020

Все сообщения Dapper в S / O, связанные с возвратом значения после вставки, похоже, относятся только к значению Identity. Я пытался применить logi c в этих ответах на мою проблему, но он не работает.

Я хочу вернуть GUID, сгенерированный SQL Сервером, который не Поле идентичности. Это мой код:

public bool Insert(Record record)
{
    SqlConnection connection = new SqlConnection(_configuration.GetConnectionString("Production"));
    connection.Open();
    using (connection)
    {
        string query = "DECLARE @RSGUID uniqueidentifier SET @RSGUID = NEWID(); INSERT INTO [dbo].[Table] ([Result], [ResultSetKey]) VALUES (@Result, @RSGUID); SELECT @RSGUID";
        // it's this next line that I'm confused on:
        var resultSetKey = connection.Query<string>(query, @RSGUID).Single();
        return connection.Execute(query, record) > 0;
    }
}

Я знаю, что строка var resultsSetKey неверна, и с этим мне нужна помощь. Как я могу получить GUID, сгенерированный SQL Сервером, в переменную?

1 Ответ

1 голос
/ 07 марта 2020

Сейчас я не могу проверить, но это должно сработать:

public bool Insert(Record record)
{
    using (var connection = new SqlConnection(_configuration.GetConnectionString("Production"))
    {
        string query = "DECLARE @RSGUID uniqueidentifier; SET @RSGUID = NEWID(); INSERT INTO [dbo].[Table] ([Result], [ResultSetKey]) VALUES (@Result, @RSGUID); SELECT @RSGUID";
        var resultSetKey = connection.ExecuteScalar<string>(query).SingleOrDefault();
        return !String.IsNullOrEmpty(resultSetKey);
    }
}

Вы можете получить кикстарт с Dapper, следуя инструкциям здесь:

https://medium.com/dapper-net/get-started-with-dapper-net-591592c335aa

но, честно говоря, не совсем понятно, что вы пытаетесь сделать. Какую переменную @Result вы используете в коде T- SQL?

...