2011-07-03 12 views
0

は私が持っていると言う実体節約するために管理することはできません: はnullに多対一の関連付けを設定し、

public class Event { 
    public int EventID { get; set; } 
    ... 
    public Sponsor Sponsor { get; set; } 
} 


public class Sponsor { get; set; } 
    public int SponsorID { get; set; } 
    ... 
} 

だからイベントを持つことができるが、必ずしも、スポンサーを持っていません。私はイベントを作成し、スポンサーを設定してそれを保存することができます。私は仕事をする方法を見つけ出すことはできませんどのような

Event event = context.Events.Find(id); 
event.Sponsor = null; 
context.SaveChanges(); 

上記では、データベース内のsponsorid列に変更を加えていません。

答えて

0

"スポンサー"を仮想プロパティにするようにしてください。設定によっては、EFは既にEvent.Sponsorプロパティがロードされているかどうかわかりませんが、そうでない場合はSponsor = nullが実際の変更であることもわかりません。 EFによって生成されるプロキシには2種類あり、POCOに応じてEFはイベントクラスの自己追跡プロキシを生成しません(たとえば、ナビゲーションプロパティスポンサーは仮想ではありません)。そのため、スナップショット「スポンサー」がロードされておらず、「スポンサー」がヌルに設定されている更新済みのイベントエンティティの値が変更されていないと仮定します。

関連する問題