«Свойство не поддерживается текущим поставщиком базы данных» - PullRequest
0 голосов
/ 24 февраля 2020

У меня ошибка, похожая на: Свойство X имеет тип Y, который не поддерживается текущим поставщиком базы данных

, но имеет немного другую проблему:

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

    public class Apple
    {
        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; }
    }

В классе DbContext:

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

Но, похоже, он не работает и выдает ошибку: «Свойство» Apple. Box »имеет тип« Box », который не поддерживается текущим поставщиком базы данных. Либо измените тип свойства CLR, либо игнорируйте свойство с помощью атрибута« [NotMapped] »или с помощью« EntityTypeBuilder.Ignore »в« OnModelCreating »

1 Ответ

0 голосов
/ 03 марта 2020

Ключ должен быть типом базы данных, а не типом CLR. Можно иметь типы CLR в качестве свойств, если они не являются ключами.

...