说我有:
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 :(得分:0)
尝试将“赞助商”设为虚拟财产。根据您的配置,EF不知道您是否已经加载了Event.Sponsor属性,如果还没有,它也不知道Sponsor = null是一个实际的更改。 EF生成的代理有两种,根据您的POCO,EF没有为您的事件类生成自我跟踪代理(例如,导航属性赞助商不是虚拟的),因此在比较快照时上一个Event实体,其中“Sponsor”未加载和更新的那个,其中“Sponser”设置为null,它假定您没有更改它的值。