你也應該能夠做到這一點是這樣的:
// perform insert with a linq expression
db.Insert.Into<PARTS_VI_PART_NUMBER>(
x => x.ITEM_NUMBER,
x => x.ITEM_CLASS_CODE,
x => x.ITEM_DESCRIPTION,
x => x.MANUFACTURER
).Values(
"TEST",
"TEST",
"TEST",
"TEST"
).Execute();
// update using linq expression
db.Update<PARTS_VI_PART_NUMBER>()
.Set(x => x.ITEM_DESCRIPTION == "UPDATED",
x => x.ITEM_CLASS_CODE == "UPDATED2")
.Where(x => x.ITEM_NUMBER == "TEST")
.Execute();
// delete inserted row with a linq expression
db.Delete<PARTS_VI_PART_NUMBER>(x => x.ITEM_NUMBER == "TEST").Execute();
至少這是如何我在我的項目之一,已經做了。 將Insert()
,Update()
和Delete()
方法生成的Context.tt
轉換爲Context.cs
文件(我使用的是「ActiveRecord」T4文件)。
編輯
哦,對不起,當我讀福斯特你的問題,我還以爲你要求更簡單的方法「插入」或「更新」,但經過重新 - 讀它,我意識到你要求「插入,或更新,如果它已經存在」像做'upsert'。
對不起,我的答案並沒有真正覆蓋。我也不知道做這件事的好方法。我通常只會做你正在做的事情...嘗試選擇它,如果我沒有得到任何結果,請執行插入操作。
不用擔心隊友。 – Jamsi
只是希望它具有Rails的find_or_create幫助器方法:P – Jamsi
這是一個開源項目......隨意添加一個;)不幸的是,那是沒有得到很好支持的事情之一。 Ansi sql提供了「merge into」語句,但並不是每個DB都實現它。一些有自己的語法。我認爲不可能將其添加到SubSonic中。它只是爲每個支持的數據庫添加它並進行測試。 – CodingWithSpike