вставить в базу данных отношения "один ко многим". net core 3.1 - PullRequest
0 голосов
/ 25 мая 2020

У меня есть отношение "один ко многим" таблиц Race и Subrace. В одной расе может быть несколько подрас, но в одной подрасе может быть только одна раса. Я создал следующие классы.

 public class Race
    {
        public int ID { get; set; }

        [Required]
        public string RaceName { get; set; }

        [Required]
        [StringLength(200)]
        public string RaceFeatures { get; set; }


        [JsonIgnore]
        public IList<SubRace> SubRaces { get; set; }


 public class SubRace
    {
        public int Id { get; set; }

        [Required]
        [StringLength(50, ErrorMessage = "Only 50 characters allowed")]
        public string SubRaceName { get; set; }
        [Required]
        [StringLength(400, ErrorMessage = "Only 400 characters allowed")]
        public string SubraceFeatures { get; set; }



        public int RaceID { get; set; }
        public Race Race { get; set; }
    }

Однако я не могу понять, как мне инициализировать значения в этой таблице. Это то, что я пытаюсь сделать, но при попытке запуска получаю следующую ошибку.

System.NullReferenceException: 'Ссылка на объект не установлена ​​на экземпляр объекта.'

API.Model.Race.SubRaces.get вернул null.

if (!context.Races.Any())
            {
                var rc0 = new Race()
                {
                    RaceName = "Elf",
                    RaceFeatures = "Darkvision. +2 Charisma",
                  
                };
                var sr1 = new SubRace()
                {
                    Race = rc0,
                    SubRaceName = "Wood",
                    SubraceFeatures = "+1 Wisdom",

                };
                rc0.SubRaces.Add(sr1);
                context.Races.Add(rc0);
                context.SaveChanges();
            }

Что я здесь делаю не так? Кажется, я не могу понять.

1 Ответ

1 голос
/ 25 мая 2020

Вам не хватает инициализации SubRaces.

var rc0 = new Race()
            {
                RaceName = "Elf",
                RaceFeatures = "Darkvision. +2 Charisma",
                SubRaces = new List<SubRace>()
            };
...