web-dev-qa-db-ja.com

LINQ to Entitiesでレコードを更新する方法

わかりましたので、私はEFとLINQの両方が初めてです。 INSERTおよびDELETEの方法を考え出しましたが、何らかの理由でUPDATEが理解しにくいようです。

これが私のコードのサンプルです:

_EntityDB dataBase = new EntityDB();
Customer c = new Customer
{
     Name = "Test",
     Gender = "Male
};
dataBase.Customers.AddObject(c);
dataBase.SaveChanges();
_

上記は問題なくレコードを作成して追加します。

_Customer c = (from x in dataBase.Customers
             where x.Name == "Test"
             selext x).First();
dataBase.Customers.DeleteObject(c);
dataBase.SaveChanges();
_

上記は、指定されたレコードを効果的に削除します。

今、どのように更新しますか?エンティティコレクションに「UpdateObject()」メソッドが見つからないようです。

39
Chev

返されたエンティティの1つを変更するだけです:

Customer c = (from x in dataBase.Customers
             where x.Name == "Test"
             select x).First();
c.Name = "New Name";
dataBase.SaveChanges();

更新できるのはエンティティのみです(EntityObjectを拡張するものであり、select new CustomObject{Name = x.Name}

82
tster

//更新用

(from x in dataBase.Customers
         where x.Name == "Test"
         select x).ToList().ForEach(xx => xx.Name="New Name");

//削除用

dataBase.Customers.RemoveAll(x=>x.Name=="Name");
7
Zohaib Iqbal

どちらもコレクションへの変更を追跡し、DBを更新するSaveChanges()メソッドを呼び出すだけです。

3
Anthony