第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

有沒(méi)有辦法將簡(jiǎn)潔的查詢添加到列表中并執(zhí)行全部?

有沒(méi)有辦法將簡(jiǎn)潔的查詢添加到列表中并執(zhí)行全部?

C#
www說(shuō) 2023-09-09 17:03:57
我正在使用 Dapper 對(duì)數(shù)據(jù)庫(kù)執(zhí)行查詢。我想知道是否有一種方法可以創(chuàng)建一個(gè)包含多個(gè)方法的列表,并通過(guò)循環(huán)它們來(lái)執(zhí)行它們。我包括兩種顯示我正在使用的查詢的方法。我有另一種方法連接到數(shù)據(jù)庫(kù)并在其中調(diào)用方法。private void DeleteCar(SqlConnection connection, string databaseName){    Console.WriteLine($@"Starting Delete for CarInfo for {databaseName}");    connection.Query($"DELETE FROM dbo.CarInfo WHERE ParentCarId IS NULL OR ParentDriverId IS NULL");}private void DeleteHouse(SqlConnection connection, string databaseName){    Console.WriteLine($@"Starting Delete for HouseInfo for {databaseName}");    connection.Query($"DELETE FROM dbo.HouseInfo WHERE ParentHouseId IS NULL OR ParentOwnerId IS NULL");}
查看完整描述

3 回答

?
揚(yáng)帆大魚(yú)

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊

。當(dāng)針對(duì)多個(gè)輸入發(fā)出相同的查詢時(shí),通過(guò)傳遞 an作為參數(shù)對(duì)象, Dapper確實(shí)有一個(gè)IEnumerable<T>工具 - 它本質(zhì)上是在內(nèi)部展開(kāi)它,就好像您依次foreach使用每個(gè)項(xiàng)目發(fā)出了一個(gè) - 但對(duì)于不同的查詢:不,只需將它們一個(gè)接一個(gè)地發(fā)出即可。



查看完整回答
反對(duì) 回復(fù) 2023-09-09
?
拉莫斯之舞

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊

您可以為每個(gè)方法創(chuàng)建一個(gè)操作,但操作需要具有相同的原型(參數(shù))。一個(gè)動(dòng)作相當(dāng)于一個(gè)指向函數(shù)的指針。為了簡(jiǎn)單起見(jiàn),這里我使用 lambda 初始化操作。


一旦你有了一系列的動(dòng)作,你就可以循環(huán)遍歷它并一一調(diào)用它們。


    var methods = new List<Action<SqlConnection, string>>

    {

        (connection,databaseName) => DeleteCar(connection, databaseName),

        (connection,databaseName) => DeleteHouse(connection, databaseName),

    };


    SqlConnection myDb;

    string dbName;


    foreach (var action in methods)

    {

        action(myDb, dbName);

    }

我還可以直接使用方法組初始化數(shù)組


    var methods = new List<Action<SqlConnection, string>>

    {

        DeleteCar,

        DeleteHouse,

    };

不同之處在于,對(duì)于方法組,您可以直接給出方法,而對(duì)于 lambda,您可以調(diào)整參數(shù)(例如始終給出相同的 dbName):


    string dbName = "toto"; 

    var methods = new List<Action<SqlConnection, string>>

    {

        (connection) => DeleteCar(connection, dbName),

        (connection) => DeleteHouse(connection, dbName),

    };


    SqlConnection myDb;


    foreach (var action in methods)

    {

        action(myDb);

    }


查看完整回答
反對(duì) 回復(fù) 2023-09-09
?
largeQ

TA貢獻(xiàn)2039條經(jīng)驗(yàn) 獲得超8個(gè)贊

實(shí)際上,您可以在存儲(chǔ)過(guò)程中使用表類型,因此在 C# 中您可以創(chuàng)建如下模型:


public class IntIdTableType

{

    public int Id { get; set; }

}

然后通過(guò)您的連接,您可以執(zhí)行以下操作:


connection.QueryAsync<myViewModel>("[dbo].[spName]", param: new

    {

        ((List<IntIdTableType>)model.YourIListPropertyModel).ToDataTable(),

    }, commandType: CommandType.StoredProcedure);

然后在你的SQL中創(chuàng)建表類型


CREATE TYPE intHelper AS TABLE

    Id INT

)

最后在您的參數(shù)中的存儲(chǔ)過(guò)程中:


    @MyIdTableType [intHelper] READONLY

詢問(wèn):


    DELETE FROM dbo.HouseInfo WHERE ParentHouseId IS NULL OR ParentOwnerId IS NULL AND SomeColumn IN (@MyIdTableType)



查看完整回答
反對(duì) 回復(fù) 2023-09-09
  • 3 回答
  • 0 關(guān)注
  • 163 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)