2010-12-14 20 views
7

それは...Entity Frameworkのコードの最初の更新

例えば、スタブオブジェクトを使用してDBに行全体を照会せずに更新するEFコード・ファーストで可能です

public class Dinner 
{  
    public int DinnerID { get; set; }  
    public string Title { get; set; }  
    public DateTime EventDate { get; set; }  
    public string Address { get; set; }  
    public string Country { get; set; }  
    public string HostedBy { get; set; }  
} 



Dinner dinner = dinner.DinnerID = 1;  
dinner.HostedBy = "NameChanged" 
nerdDinners.SaveChanges(); 

上記のコードは、DinnerID 1の行に対して次の列をnullにするUpdate Statementを作成しますか?

タイトル、EVENTDATE、住所、国

は真の「PropertyModified」=などの方法や方法はありますHostedByがなるだけであるように、そして残りは、= falseのそれらを作ります更新しました?

答えて

4

私はあなたがApplyCurrentValues

public void UpdateDinner(Dinner existingDinner) 
{ 
    var stub = new Dinner { DinnerId = existingDinner.DinnerId }; 
    ctx.Dinners.Attach(stub); 
    ctx.ApplyCurrentValues(existingDinner); 
    ctx.SaveChanges(); 
} 

ApplyCurrentValuesグラフ内のオブジェクトへのコピー既存のオブジェクトからスカラー値を探している思い(に上記の場合 - スタブエンティティ)。修正されたオブジェクトの元の値とは異なる任意の値がマークされている

備考MSDNにセクションから

それはあなたの後ですか?

+0

なぜ私は 'ApplyCurrentValues()'を見つけることができませんか?メソッドは存在しません。 –

+0

これは 'ObjectContext'クラスのメソッドです... – RPM1984

0

これは多分、EF Code Firstとは異なっているようです。修飾としての性質をマーキング

ADO.NET team blog

」から

var dinner = context.Dinners.Find(1); 

context.Entry(dinner).Property(d => d.HostedBy).IsModified = true; 

context.SaveChanges(); 

は、プロパティの現在の値が元の値と同じであってもSaveChangesメソッドが呼び出されたプロパティのデータベースに送信される更新を強制します"

1

あなたはまずEFモデルやデータベースを使用しているとき、ポールの答えに構築するには、次のように動作します:

context.ObjectStateManager.GetObjectStateEntry(dinner).SetModifiedProperty("HostedBy"); 
1

ちょうど私の元の質問を参照するために、見つからここでの答え:

Update a single property of a record in Entity Framework Code First

一時的に検証を無効にする方法も含まれています。特に、EF Power Toolsを使用してDBをリバースエンジニアリングしてファーストクラスをコーディングする場合には非常に便利です。

関連する問題