使用 Dapper,有沒有辦法用準備好的陳述句將其形成一個查詢?的長度userIds是動態的。
public static void LinkUsersToChatroom(int chatroomId, int[] userIds)
{
using SqlConnection connection = new(connectionString);
connection.Execute(
"INSERT INTO chatroom_users (chatroomId, userId) VALUES (@chatroomId, @userId)",
new { chatroomId, userId = userIds[0] });
connection.Execute(
"INSERT INTO chatroom_users (chatroomId, userId) VALUES (@chatroomId, @userId)",
new { chatroomId, userId = userIds[1] });
connection.Execute(
"INSERT INTO chatroom_users (chatroomId, userId) VALUES (@chatroomId, @userId)",
new { chatroomId, userId = userIds[2] });
}
uj5u.com熱心網友回復:
Dapper 相對于直接 ADO.NET的眾多優勢之一是將資料串列插入表的簡單性。
您只需要一個類的串列,其中該類<T>的屬性與您的資料庫欄位具有相同的名稱,因此...
private class ChatRoomUser
{
public int chatroomId {get;set;}
public int userId {get;set;}
}
public static void LinkUsersToChatroom(int chatroomId, int[] userIds)
{
//Transform the array in an IEnumerable of ChatRoomUser
var users = userIds.Select(x => new ChatRoomUser
{
chatroomId = chatroomId,
userIds = x
};
using SqlConnection connection = new(connectionString);
connection.Execute(@"INSERT INTO chatroom_users (chatroomId, userId)
VALUES (@chatroomId, @userId)",
users);
}
如果您想維護當前方法的實際介面,您可以使用這種方法,但是,當然,沒有什么可以阻止您在構建陣列的地方直接構建串列并傳遞串列而不是兩個引數,甚至創建一個多載此方法接受串列作為其輸入。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/370206.html
