Как я могу написать код, который ссылается на свой собственный класс «многие-ко-многим» при кодировании базы данных ASP.C#

Место общения программистов C#
Anonymous
Как я могу написать код, который ссылается на свой собственный класс «многие-ко-многим» при кодировании базы данных ASP.

Сообщение Anonymous »

У меня есть класс «Слово», и я пытаюсь создать таблицу, ссылающуюся на «слово», чтобы сохранить синонимы и антонимы слов этого класса в базе данных.
Мой класс слов

Код: Выделить всё

[Table("Word", Schema = "dbo")]
public class Word
{
public int Word_ID { get; set; }
public string Word_EN { get; set; }
public NounVerbAdj WordType { get; set; }
public string? Sentence_En { get; set; }
public string? Sentence_Tr { get; set; }
public bool Verify { get; set; }

public virtual List Antonym1  { get; set; }
public virtual List Antonym2  { get; set; }

public virtual List Synonym1 { get; set; }
public virtual List Synonym2 { get; set; }
}

public class WordConfiguration : IEntityTypeConfiguration
{
public void Configure(EntityTypeBuilder builder)
{
builder.Property(x => x.Word_ID).ValueGeneratedOnAdd();

builder.Property(x => x.Word_EN).IsRequired(true).HasMaxLength(30);
builder.Property(x => x.WordType).IsRequired(true).HasMaxLength(1);
builder.Property(x => x.Verify).IsRequired(true).HasDefaultValue(false);

builder.Property(x => x.Sentence_En).IsRequired(false).HasMaxLength(200);
builder.Property(x => x.Sentence_Tr).IsRequired(false).HasMaxLength(200);

builder.HasIndex(x => x.Word_ID).IsUnique(true);

builder.HasKey(x => x.Word_ID);

}
}
И мой класс антонимов:

Код: Выделить всё

[Table("Antonym", Schema = "dbo")]
public class Antonym
{
public int Word_ID_1 { get; set; }
public virtual Word Word_1 { get; set; }

public int Word_ID_2 { get; set; }
public virtual Word Word_2 { get; set; }
}

public class AntonymConfiguration : IEntityTypeConfiguration
{
public void Configure(EntityTypeBuilder builder)
{
builder.HasKey(wk => new { wk.Word_ID_1, wk.Word_ID_2 });

builder.HasOne(wk => wk.Word_1)
.WithMany(w => w.Antonym1)
.HasForeignKey(wk => wk.Word_ID_1);

builder.HasOne(wk => wk.Word_2)
.WithMany(w => w.Antonym2)
.HasForeignKey(wk => wk.Word_ID_2);
}
}
Ошибки:

Введение ограничения FOREIGN KEY «FK_Antonym_Word_Word_ID_2» в таблице «Antonym» может вызвать циклы или несколько каскадных путей. . Укажите ON DELETE NO ACTION или ON UPDATE NO ACTION или измените другие ограничения FOREIGN KEY.

Я просто хочу создать эти таблицы и связи:
Изображение

Данные каждого слова на них могут ссылаться несколько синонимов и антонимов. Я хочу создать эту связь между словами, сохранив месяцы языков слов в другой таблице.
Как я могу предотвратить циклы или другие проблемы? Я не могу запустить миграцию EF для обновления базы данных.

Подробнее здесь: https://stackoverflow.com/questions/784 ... -coding-an

Вернуться в «C#»