我创建了一个wpf应用程序,并且我使用entityFrameworkCore创建了数据库,但是我无法创建具有自引用功能的模型。 我尝试所有的选项
我的模特
public class Tag
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int TagID { get; set; }
[Required]
public string Name { get; set; }
[Required]
public int TagLevel { get; set; }
public int? TagMotherID { get; set; }
public virtual Tag TagMother { get; set; }
public virtual ICollection<Tag> ListOfTagsChild { get; set; }
public virtual ICollection<ArchiveTag> ListOfArchive { get; set; }
}
和OnModelCreating方法中
modelBuilder.Entity<Tag>()
.HasOne(entity => entity.TagMother)
.WithMany(entity => entity.ListOfTagsChild)
.HasForeignKey(entity => entity.TagMotherID);
标签可以有一个或零个父母,但他可以有多个孩子
与此有关,我有这个错误
SqlException:MERGE语句与FOREIGN KEY SAME TABLE约束“ FK_Tags_Tags_TagMotherID”冲突。在数据库“ EFCoreTest”的表“ dbo.Tags”的“ TagID”列中发生了冲突。
答案 0 :(得分:0)
请尝试将OnModelCreating更改为
.HasForeignKey(entity => entity.TagMotherID);