我收到了这个错误
在表“区域”上引入FOREIGN KEY约束“FK_dbo.Regions_dbo.Countries_CountryId”可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。无法创建约束。请参阅以前的错误。
我想知道这是否意味着我的数据库设计不好?我听说你关掉了级联之类的东西,但我只是不确定这是否能解决问题。
我只是让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; }
}
可能是因为商店吗?
添加modelBuilder。习俗。去除
public class YourDataContext : DbContext
{
public DbSet<Country> Countries{ get; set; }
...
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
}
}
同样的问题:实体框架如何解决外键约束可能导致循环或多重
模型中的所有关系都是必需的,因为所有外键属性(CountryId
、RealonId
、CityId
)都不能为空。对于所需的一对多关系,EF将按惯例启用级联删除。
国家和地区有多个指向存储表的删除路径,例如,如果删除国家,可以通过三个不同的级联路径删除相关的存储(SQL Server不允许):
国家
-必须通过使用Fluent API禁用级联删除或将某些关系定义为可选关系(使用可为空的外键)来避免这种不明确的删除路径。
或者从除City
之外的所有实体中删除Stores
集合(以及逆引用和FK属性)。对我来说,这些集合看起来是多余的,因为您可以通过浏览区域找到
集合。国家
中的所有商店。城市。商店
问题内容: 尝试向表中添加约束时出现问题。我得到了错误: 在表“ Employee”上引入FOREIGN KEY约束“ FK74988DB24B3C886”可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。 我的约束是在一个表和一个表之间。该表包括,,,和。的具有多个字段的标号,从而可以存在对于每
我正在尝试更新数据库,但出现此错误。这件事我已经纠结了一段时间,不太清楚到底发生了什么。 引入外键约束“FK\u dbo”。注释\u dbo。表“Comments”上的Users\u UserId可能导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他外键约束。无法创建约束或索引。请参阅以前的错误。 这是我的用户类: 下面是我的评论
给大师们的一个快速问题。 我有2个EF模型课程: 基本上,我想先在代码中创建一对多关系。 但当我尝试这样做时,我会出现以下错误: 引入外键约束“FK\u dbo”。Teachers\u dbo。表“教师”上的“Schools\u SchoolId”可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他外键约束。 我哪里做错了?
我已经发现了许多其他类似的问题,但我不知道为什么它会在我的实体上这样做。用简单的英语表示如下。三个实体:账户、现场和合同。一个帐户可以有多个站点。一个帐户可以有多个合同。一个站点可以有多个合同。因此,在某些情况下,您可以将合同附加到站点,然后将其附加到帐户,或者将合同直接附加到帐户。 我假设我得到了这一点,因为删除合同有两种可能的级联,一种是在删除帐户时级联,另一种是直接附加到帐户,另一种是在删除
我已经和这件事纠缠了一段时间,不太清楚到底发生了什么。我有一个卡实体,它包含两个边(通常是2个),并且卡和边都有一个舞台。我正在使用EF Codefirst迁移,迁移失败,出现以下错误: 在表“Sides”上引入外键约束“FK_dbo.Sides_dbo.Cards_cardd”可能会导致循环或多个级联路径。指定“在删除时不执行操作”或“在更新时不执行操作”,或修改其他外键约束。 这是我的卡实体:
问题内容: 从实体框架代码优先生成数据库时,出现此错误。 我没有看到脚本有任何问题: 每个参考都指向不同的表! 每个表上只能有一个删除级联吗? 如果我有3个表:Users,Posts和Votes。 与关系: Post.AuthorId-> User.Id投票.PostId-> Post.Id Votes.UserId-> User.Id SQL正确生成错误,因为如果删除帖子,我将有2条投票路径:用