Вопрос

В настоящее время используется дозвуковая 3 с Activerecord. Есть исключительно из любопытства, есть ли простой способ обновлять или вставить запись чистым и подходящим образом?

Вместо

 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
 }
Это было полезно?

Решение

Стандартные шаблоны ActiveRecord предоставляют метод сохранения (), который либо вызывает add (), либо Update () в зависимости от того, является ли объект inew (). Это должно работать в издании, который вы дали.

Другие советы

Вы также должны быть в состоянии сделать это так:

            // 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).


Редактировать

О, извините, когда я записал ваш вопрос, я подумал, что вы просите более простой способ "Вставьте" или "обновление", но после перечитывания, я понял, что вы просите «Вставьте или обновите, если это уже существует» Как делать «поднятие».

Извините, мой ответ на самом деле не покрывает это. Я тоже не знаю хорошего способа сделать это. Обычно я просто делаю то, что вы делаете ... попробуйте выбрать его, и если я не получу результатов, сделайте вставку.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top