亜音速3-更新の挿入
-
27-10-2019 - |
質問
現在、ActivereCordでSubsonic 3を使用しています。純粋に好奇心から、クリーンで見事な方法でレコードを更新または挿入する簡単な方法はありますか?
それ以外の
var record = MyModal.SingleOrDefault(x => x.id == 1)
if (record != null)
{
// code to update record here
} else {
// code to insert a record here
MyModal record = new MyModal();
record.attribute1 = "blah"
... blah blah
}
解決
標準のActiverCordテンプレートは、オブジェクトがnew()かどうかに応じて、add()またはupdate()を呼び出すSave()メソッドを提供します。それはあなたが与えたサンプルで動作するはずです。
他のヒント
また、このようにできるはずです:
// 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();
少なくともそれは私が私のプロジェクトの1つでそれをやってきた方法です。 Insert()
, Update()
と Delete()
メソッドはによって生成されます Context.tt
に Context.cs
ファイル(「ActivereCord」T4ファイルを使用しています)。
編集
申し訳ありませんが、私があなたの質問を読んだとき、私はあなたがより簡単な方法を求めていると思いました 「挿入」または「更新」, 、しかし、それを読み直した後、私はあなたが求めていることに気付きました 「既に存在する場合は挿入または更新」 「upsert」をするようなものです。
申し訳ありませんが、私の答えは本当にそれをカバーしていません。私もそれをする良い方法を知りません。私は通常、あなたがしていることをしてしまうことになります...それを選択してみてください。結果が得られない場合は、挿入を行います。
所属していません StackOverflow