2 foreign key на одну и туже таблицу

128
19 июня 2021, 14:40

Есть в БД сущность Package, хочу также хранить дубликаты этой сущности.

Package:

public class Package
{
    public ulong Id { get; set; }
    public ICollection<Duplicate> Duplicates { get; set; }
}

Duplicate:

public class Duplicate
{
    public ulong Id { get; set; }
    public ulong PackageAId { get; set; }
    public ulong PackageBId { get; set; }
    public byte MatchPercent { get; set; }
    public Package PackageA { get; set; }
    public Package PackageB { get; set; }
}

Конфигурация Duplicate:

internal class DuplicateConfiguration : IEntityTypeConfiguration<Duplicate>
{
    public void Configure(EntityTypeBuilder<Duplicate> builder)
    {
        builder.HasOne(x => x.PackageA)
            .WithMany(x => x.Duplicates)
            .HasForeignKey(x => x.PackageAId)
            .OnDelete(DeleteBehavior.Cascade)
            .HasConstraintName("fk_duplicates_packages_a");
        builder.HasOne(x => x.PackageB)
            .WithMany(x => x.Duplicates)
            .HasForeignKey(x => x.PackageBId)
            .OnDelete(DeleteBehavior.Cascade)
            .HasConstraintName("fk_duplicates_packages_b");
    }
}

При создании миграции получаю такую ошибку:

Cannot create a relationship between 'Package.Duplicates' and 'Duplicate.PackageB', because there already is a relationship between 'Package.Duplicates' and 'Duplicate.PackageA'. Navigation properties can only participate in a single relationship.

Как правильно создать связи между таблицами?

READ ALSO
Заполнить массив элементами из Enum

Заполнить массив элементами из Enum

Подскажите, нужно заполнить массив, не где не могу найти как работать толково с типом enum

103
Разбор PDF-файла (low level)

Разбор PDF-файла (low level)

Я решил попробовать разобрать PDF-файл средствами c# и у меня возник вопросВопрос, наверное, больше про байты, чем про сам формат, но если вы работали...

134
Assembler в Pascal и в C#

Assembler в Pascal и в C#

Есть программа на паскале, написанная изначально не мнойПеревожу ее на C#

124