Как обновить в Linq до SqL? - PullRequest
       20

Как обновить в Linq до SqL?

0 голосов
/ 28 августа 2009

каждый пример, который я видел, показывает, как выполнить запрос на обновление в linq to sql.

// grab entity you want to update

entity.UserId = "123"; // update the fields you want to update.
entity.Name = "bob";

Dbcontext.SubmitChanges();

Мне интересно, можете ли вы просто передать новый объект и выяснить это?

Как я мог это сделать?

Enity myEntity = new Entity();
myEntity.UserId = "123";
myEntity.Name = bob:

    // grab entity record
    // shove record ito the found record
    // it figured out what to update and what no to update

Ответы [ 4 ]

2 голосов
/ 28 августа 2009

В зависимости от того, что именно вы хотите сделать, вам нужен либо метод InsertOnSubmit, либо метод Attach соответствующей таблицы (т.е. dbContext.Entities). InsertOnSubmit используется для добавления записи, тогда как Attach может использоваться, если вы хотите повлиять на UPDATE без необходимости сначала SELECT записи (вы уже знаете значение первичного ключа)

1 голос
/ 28 августа 2009

Если у вас есть готовый dbContext, просто добавьте InsertOnSubmit :

Entity myEntity = new Entity();
myEntity.UserId = "123";
myEntity.Name = bob:

Dbcontext.InsertOnSubmit(myEntity);

Dbcontext.SubmitChanges();

Как следует из названия метода, это добавит ваш новый объект в базу данных при вызове SubmitChanges.

Марк

0 голосов
/ 28 августа 2009

Возможно прикрепить и сохранить его в базе данных, однако вы можете установить поле для проверки на параллелизм (например, LastModified).

Если вы собираетесь использовать метод Attach для контекста данных, вам необходимо установить первичные / составные ключи , прежде чем присоединять сущность (чтобы не вызывать INotifyPropertyChanging, INotifyPropertyChanged событий).

0 голосов
/ 28 августа 2009

Если вы хотите сделать это по соображениям производительности, не беспокойтесь об этом. Linq to Sql будет кэшировать объекты локально, так что простой захват объекта по ID для изменения некоторых полей очень дешев.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...