Как я могу обновить в Linq объект, который разъединяется от базы данных?

https://learn.jquery.com/events/introduction-to-custom-events/

В конце веб-страницы см .:

Ниже приведен пример использования .on () и .trigger (), который использует пользовательские данные в обоих случаях:

blockquote>

$( document ).on( "myCustomEvent", {
    foo: "bar"
}, function( event, arg1, arg2 ) {
    console.log( event.data.foo ); // "bar"
    console.log( arg1 );           // "bim"
    console.log( arg2 );           // "baz"
});

$( document ).trigger( "myCustomEvent", [ "bim", "baz" ] );

6
задан Nathan Smith 15 April 2018 в 22:14
поделиться

4 ответа

По умолчанию объекты будут использовать все поля для проверки параллелизма при создании редактирований. Это - то, что бросает InvalidOperationException.

Это может устанавливать свойство Update Check для всех полей к Никогда. Это должно быть сделано на всех полях для присоединения объекта, как изменено. Если это сделано, дополнительный вызов к контексту. SubmitChanges () сохранит данные.

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

LinqEntity item = new LinqEntity(){ Id = 1, Name = "OldName", Surname = "OldSurname"}; 
context.LinqEntities.Attach(item);
item.Name = "John";
item.Surname = "Doe";
context.SubmitChanges();
4
ответ дан 17 December 2019 в 02:36
поделиться

Я не уверен, под чем Вы подразумеваете разъединенный от базы данных.

Кажется, что Вы пытаетесь вставить новую строку в таблицу LinqEntities - который корректен?

Если это так, Вы захотите сделать

context.LinqEntities.InsertOnSubmit(item);
context.Submit();
1
ответ дан 17 December 2019 в 02:36
поделиться

Хорошо, при попытке обновить строку с идентификатором = 1, то Вы сделаете это как это:

DataContext context = new DataContext();
LinqEntity item = (from le in context.LinqEntities
                  where le.ID == 1
                  select le).Single();
item.Name = "John";
item.Surname = "Doe";

context.Submit();

Вы могли также заменить выражение Linq более краткой лямбдой:

LinqEntity item = context.LinqEntities.Single(le => le.ID == 1);

Самая важная вещь, которую делает DataContext, отследить любые изменения, которые Вы вносите, так, чтобы при вызове Отправлять метода, он автоматически сгенерировал операторы Insert для вещей, которые Вы изменили.

1
ответ дан 17 December 2019 в 02:36
поделиться

При использовании ORM Вы обычно выбираете объект прежде, чем обновить его.

Можно использовать DataContext.ExecuteCommand(...) обойти ORM, если Вы не хотите делать выбор.

0
ответ дан 17 December 2019 в 02:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: