質問

現在、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.ttContext.cs ファイル(「ActivereCord」T4ファイルを使用しています)。


編集

申し訳ありませんが、私があなたの質問を読んだとき、私はあなたがより簡単な方法を求めていると思いました 「挿入」または「更新」, 、しかし、それを読み直した後、私はあなたが求めていることに気付きました 「既に存在する場合は挿入または更新」 「upsert」をするようなものです。

申し訳ありませんが、私の答えは本当にそれをカバーしていません。私もそれをする良い方法を知りません。私は通常、あなたがしていることをしてしまうことになります...それを選択してみてください。結果が得られない場合は、挿入を行います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top