Entity framework Can';t设法将多对一关联设置为null并保存实体
假设我有:Entity framework Can';t设法将多对一关联设置为null并保存实体,entity-framework,entity-framework-4.1,poco,Entity Framework,Entity Framework 4.1,Poco,假设我有: public class Event { public int EventID { get; set; } ... public Sponsor Sponsor { get; set; } } public class Sponsor { get; set; } public int SponsorID { get; set; } ... } 因此,活动可以有,但不一定有赞助商。我可以创建一个活动,设置一个赞助商并保存它 我搞不懂如何工作的是 Ev
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();
以上内容不会更改数据库中的“赞助商ID”列。尝试将“赞助商”设置为虚拟财产。根据您的配置,EF不知道是否已加载Event.Shandor属性,如果尚未加载,EF也不知道Shandor=null是实际更改。EF生成了两种代理,具体取决于您的POCOs,EF没有为您的事件类生成自跟踪代理(例如,导航属性赞助商不是虚拟的),因此当它比较前一个事件实体(其中“赞助商”未加载)和更新的事件实体(其中“赞助商”设置为null)的快照时,它假定您没有更改它的值