簡體   English   中英

有沒有辦法調用存儲的 MySQL 過程,包括在 C# 中使用 Dapper 插入參數?

[英]Is there a way to call a stored MySQL procedure include insert parameters with Dapper in C#?

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);
    }
}

以下是適用於大多數 ADO.NET 供應商的一般指南; 它沒有考慮到任何 MySQL 特性或細微差別(因為我不是 MySQL 用戶)

如果存儲過程參數與user上的屬性完全匹配,那么您應該能夠簡單地執行此操作;

connection.Execute(
    "InsertUserProcedure", users, commandType: CommandType.StoredProcedure);

如果user的屬性多於存儲過程所需的屬性,則一種方法是通過EXEC / CALL間接調用存儲過程(作為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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM