我收到此错误引进国外KEY约束可能会导致循环或多个级联路径
表“区域”可能会导致 循环或多个级联路径引进国外KEY约束 “FK_dbo.Regions_dbo.Countries_CountryId” 。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他外键约束。无法 创建约束。查看以前的错误。
我想知道这是不是意味着我的数据库设计是坏?我读您关闭级联或类似的东西,但我只是不知道这是席卷问题出来了地毯的。
我只是让EF在我的领域类生成我的表(我没有使用任何数据注释或流畅映射在这一点)。
public class Country
{
public Country()
{
this.Stores = new List<Store>();
this.Regions = new List<Region>();
Id = GuidCombGenerator.GenerateComb();
}
public Guid Id { get; private set; }
private string name;
public string Name
{
get { return name; }
set
{
name = value.Trim();
}
}
private string code;
public string Code
{
get { return code; }
set
{
code = value.Trim();
}
}
public virtual ICollection<Store> Stores { get; set; }
public virtual ICollection<Region> Regions { get; set; }
}
public class City
{
public City()
{
this.Stores = new List<Store>();
Id = GuidCombGenerator.GenerateComb();
}
public Guid Id { get; private set; }
private string name;
public string Name
{
get { return name; }
set
{
name = value.Trim();
}
}
public Guid RegionId { get; set; }
public virtual Region Region { get; set; }
public virtual ICollection<Store> Stores { get; set; }
}
public class Region
{
public Region()
{
this.Cities = new List<City>();
this.Stores = new List<Store>();
Id = GuidCombGenerator.GenerateComb();
}
public Guid Id { get; private set; }
private string state;
public string State
{
get { return state; }
set
{
state = value.Trim();
}
}
public Guid CountryId { get; set; }
public virtual ICollection<City> Cities { get; set; }
public virtual Country Country { get; set; }
public virtual ICollection<Store> Stores { get; set; }
}
public class Store
{
public Store()
{
Id = GuidCombGenerator.GenerateComb();
Users = new List<User>();
}
public Guid Id { get; private set; }
public Guid CountryId { get; set; }
public Guid CityId { get; set; }
public Guid RegionId { get; set; }
public virtual City City { get; set; }
public virtual Country Country { get; set; }
public virtual Region Region { get; set; }
public virtual ICollection<User> Users { get; set; }
}
难道是因为商店?
,你能否告诉我们涉及到的表,其结构是什么,最重要的是:如何FK约束在它们之间建立?所以你想在区域和国家之间建立一个级联删除,这样如果一个国家被删除,它的所有区域都会被删除?听起来很合理 - 问题是:为什么会造成循环?你已经有了什么其他的FK级联删除约束? –
好的,我更新它来显示这些区域,我没有任何生成的表,因为我正在做代码第一。 – chobo2
不幸的是,您没有向我们展示'Store'类....并且我没有看到任何定义级联删除的代码,或者... –