基本引數化 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 使用命令文字來確定要新增的物件的哪些成員 - 它通常不會新增不必要的東西,例如 Description
,IsActive
,CreationDate
,因為我們發出的命令顯然不涉及它們 - 儘管有時會出現這種情況可能會這樣做,例如,如果你的命令包含:
// TODO - removed for now; include the @Description in the insert
它並不試圖弄清楚以上只是一個評論。
儲存過程
儲存過程的引數完全相同,除了 dapper 無法確定應該/不應該包含的內容 - 可用的所有內容都被視為引數。因此,通常首選匿名型別:
connection.Execute("KeyLookupInsert", new { id, name },
commandType: CommandType.StoredProcedure);