EF - требует определения первичного ключа - PullRequest
0 голосов
/ 27 октября 2019

Попытка создать новую таблицу, которая имеет только внешние ключи:

public class OnlyFKs
    {
        public double a3 { get; set; }
        public int a1 { get; set; }
        public int a2 { get; set; }
        public string b { get; set; }
        public Bs B { get; set; }
        public As A { get; set; }
    }

В A & B существует:

public ICollection<OnlyFKs> OnlyFKs { get; set; }

Что происходит плохо:

modelBuilder.Entity<OnlyFKs>(o =>
            {
                o.HasOne<Bs>(thisB => thisB.B)
                    .WithMany(g => g.OnlyFKs)
                    .HasForeignKey(s => s.b);
                o.HasOne<As>(thisA => thisA.A)
                    .WithMany(g => g.OnlyFKs)
                    .HasForeignKey(g => new { g.a1, g.a2, g.a3 });
            });

Разве невозможно создать таблицу, в которой нет первичного ключа и только внешних ключей?

1 Ответ

0 голосов
/ 28 октября 2019

Должен быть первичный ключ. Если вы не хотите иметь один столбец ID, но создаете что-то вроде таблицы соединений, вы можете создать составной ключ, состоящий из a1, a2, a3 и b.

Entity Framework Core поддерживаетсоставные ключи - значения первичных ключей, сгенерированные из двух или более полей в базе данных. Однако, в отличие от предыдущих версий Entity Framework, вы не можете использовать атрибут Key для определения составных ключей. Это можно сделать только через Fluent API.

https://www.learnentityframeworkcore.com/configuration/data-annotation-attributes/key-attribute#composite-keys

...