基本引數化 SQL

Dapper 可以通過完全引數化的 SQL 輕鬆地遵循最佳實踐。

鮑比表

引數很重要,所以 dapper 可以很容易地使它正確。你只需以正常方式為你的 RDBMS(通常是 @foo?foo:foo)表達你的引數,併為 dapper 提供一個具有名為 foo 的成員的物件。最常見的方法是使用匿名型別:

int id = 123;
string name = "abc";
connection.Execute("insert [KeyLookup](Id, Name) values(@id, @name)",
    new { id, name });

而且……就是這樣。Dapper 將新增所需的引數,一切都應該工作。

使用物件模型

你還可以將現有物件模型用作引數:

KeyLookup lookup = ... // some existing instance
connection.Execute("insert [KeyLookup](Id, Name) values(@Id, @Name)", lookup);

Dapper 使用命令文字來確定要新增的物件的哪些成員 - 它通常不會新增不必要的東西,例如 DescriptionIsActiveCreationDate,因為我們發出的命令顯然不涉及它們 - 儘管有時會出現這種情況可能會這樣做,例如,如果你的命令包含:

// TODO - removed for now; include the @Description in the insert

它並不試圖弄清楚以上只是一個評論。

儲存過程

儲存過程的引數完全相同,除了 dapper 無法確定應該/不應該包含的內容 - 可用的所有內容都被視為引數。因此,通常首選匿名型別:

connection.Execute("KeyLookupInsert", new { id, name },
    commandType: CommandType.StoredProcedure);