Как я могу создать модель с собственной ссылкой EFCore - PullRequest
0 голосов
/ 18 апреля 2019

Я создаю приложение 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».

1 Ответ

0 голосов
/ 18 апреля 2019

Пожалуйста, попробуйте изменить OnModelCreating на

 .HasForeignKey(entity => entity.TagMotherID);
...