我正在尝试在 Reptile 模型和 Tag 模型之间设置基本的可选多对多关系,以便爬行动物可以有标签,而标签可以提供爬行动物的列表。
我已经从我读过的其他问题中尝试了一些设置,但我似乎无法让这种关系发挥作用。这是我目前的设置:
爬行动物模型:
public class Reptile
{
public int ReptileId { get; set; }
[Required]
[StringLength(100)]
public string Title { get; set; }
[DataType(DataType.MultilineText)]
public string Description { get; set; }
//...
public ICollection<Tag> Tags { get; set; }
}
标签型号:
public class Tag
{
public int TagId { get; set; }
[Required]
[StringLength(30)]
public string Title { get; set; }
[Required]
[DataType(DataType.MultilineText)]
public string Description { get; set; }
//...
public ICollection<Reptile> Reptiles { get; set; }
}
数据库上下文:
public class ReptizonDBContext : DbContext
{
public DbSet<UserProfile> UserProfiles { get; set; }
public DbSet<Tag> Tags { get; set; }
public DbSet<Reptile> Reptiles { get; set; }
public ReptizonDBContext()
: base("ReptilesDBContext")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Reptile>().HasMany(r => r.Tags).WithMany(t => t.Reptiles);
base.OnModelCreating(modelBuilder);
}
}
但是,在尝试运行该站点时出现以下错误:
EntityFramework.dll 中出现“System.Data.SqlClient.SqlException”类型的异常,但未在用户代码中处理
附加信息:在表 'ReptileTags' 上引入 FOREIGN KEY 约束 'FK_dbo.ReptileTags_dbo.Tags_Tag_TagId' 可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。
无法创建约束。请参阅以前的错误。
我应该如何创建这种多对多关系?