Entity framework 4 “获取异常”;无法更改关系,因为一个或多个外键属性不可为null;更新实体时
我有以下几种型号Entity framework 4 “获取异常”;无法更改关系,因为一个或多个外键属性不可为null;更新实体时,entity-framework-4,entity-framework-4.1,asp.net-mvc-4,entity-framework-5,asp.net-mvc-3-areas,Entity Framework 4,Entity Framework 4.1,Asp.net Mvc 4,Entity Framework 5,Asp.net Mvc 3 Areas,我有以下几种型号 public class Site { public int Id { get; set; } public string SiteName { get; set; } public string SiteUrl { get; set; } public IEnumerable<SiteBrand> SiteBrands { get; set; } } public class SiteBrand { public int
public class Site
{
public int Id { get; set; }
public string SiteName { get; set; }
public string SiteUrl { get; set; }
public IEnumerable<SiteBrand> SiteBrands { get; set; }
}
public class SiteBrand
{
public int Id { get; set; }
public int SiteId { get; set; }
public int BrandId { get; set; }
public SiteConfiguration SiteConfiguration { get; set; }
}
但上面的代码引发了以下异常
操作失败:无法更改关系,因为
一个或多个外键属性不可为空。当
对关系进行更改时,相关的外键属性为
设置为空值。如果外键不支持空值,
必须定义新关系,外键属性必须为
指定了另一个非空值,或者必须为不相关的对象
删除
我想我之所以会出现这个错误,是因为我试图在不清除现有外键条目的情况下更新我的站点实体。我不知道这是否正确,也不知道如何解决这个问题。有人能帮我吗
感谢问题在于您没有为SiteId外键分配值,因此它将以null(您的DB关系不允许)的形式发送到DB。尝试将代码更改为:
itemToUpdate.SiteBrands = item.SelectedBrands
.Select(br => new DataEntities.Siteconfig.SiteBrand
{
SiteId = item.Id,
BrandId = br
}).ToList();
如果删除
itemToUpdate.SiteBrands=item.SelectedBrands…
或将其更改为itemToUpdate.SiteBrands=item.SelectedBrands,是否有效代码>?
itemToUpdate.SiteBrands = item.SelectedBrands
.Select(br => new DataEntities.Siteconfig.SiteBrand
{
SiteId = item.Id,
BrandId = br
}).ToList();