Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework Can';t设法将多对一关联设置为null并保存实体_Entity Framework_Entity Framework 4.1_Poco - Fatal编程技术网

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)的快照时,它假定您没有更改它的值