Есть ли способ вызвать хранимую процедуру MySQL, включая параметры вставки с Dapper в C#? - PullRequest
1 голос
/ 17 июня 2020
public void InsertUser(string firstname, string lastname, string email, string password, int age)
{
    using (IDbConnection connection = new MySql.Data.MySqlClient.MySqlConnection(Helper.CnnVal("Database")))
    {
        List<user> users = new List<user>();
        users.Add(new user { Firstname = firstname, Lastname = lastname, Email = email, Password = password, Age = age });
        connection.Execute("InsertUserProcedure", @Firstname,@Lastname,@Email,@Password,@Age,users);
    }
}

1 Ответ

1 голос
/ 17 июня 2020

Ниже приведены общие рекомендации, применимые к большинству ADO. NET поставщиков; он не принимает во внимание какие-либо особенности или нюансы MySQL (потому что я не пользователь MySQL)

Если параметры хранимой процедуры точно соответствуют свойствам на user, тогда вы сможете чтобы сделать это просто как a CommandText, что по умолчанию):

connection.Execute(
    "EXEC InsertUserProcedure @Firstname,@Lastname,@Email,@Password,@Age", users);

(или то же самое с CALL вместо EXEC, на MySQL очевидно - см. комментарии)

Другой подход заключается в использовании Select в качестве проекции, что позволяет напрямую использовать хранимую процедуру, но ограничивает передаваемые свойства:

connection.Execute("InsertUserProcedure", users.Select(u => new {
        u.Firstname, u.Lastname, u.Email, u.Password, u.Age
    }, commandType: CommandType.StoredProcedure);
...