Как мне получить составной ключ внешнего ключа и другие свойства в EF Core? - PullRequest
1 голос
/ 24 февраля 2020

У меня есть следующие классы:

    public class Apple
    {
        public int BoxID { get; set; }

        [ForeignKey("BoxID")]
        public Box Box{ get; set; }

        public int R { get => Color.R; set => Color = new Color (value, Color.G, Color.B); }

        public int G { get => Color.G set => Color = new Color (Color.R, value, Color.B); }

        public int B { get => Color.B set => Color = new Color (Color.R, Color.G, value); }

        [NotMapped]
        public Color Color { get; set; }    
    }

    public class Box
    {
        [Key]
        public int ID { get; set; }

        public IEnumerable<Apple> Apples { get; set; }
    }

Я хотел бы получить такую ​​схему, как:

Apple:
Первичный (составной) ключ: BoxID (внешний) Ключ), R, G, B

Поле:
Первичный ключ: ID

Что я пробовал:

        modelBuilder.Entity<Apple>()
            .HasKey(a=> new { a.BoxID, a.R, a.G, a.B });

Но, похоже, не работа.

1 Ответ

1 голос
/ 24 февраля 2020

Ну, просто после публикации я решил это. В основном, Fluent API позволяет нам делать несколько вызовов для конструктора моделей:

        modelBuilder.Entity<Apple>()
            .HasOne(a=> a.Box)
            .WithMany(box => box.Apples)
            .HasForeignKey(a=> a.BoxID)
            .IsRequired();

        modelBuilder.Entity<Apple>()
            .HasKey(a=> new { a.BoxID, a.R, a.G, a.B });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...