Entity Framework.Ленивая загрузка.Коллекции - PullRequest
0 голосов
/ 27 сентября 2018

Уважаемые разработчики, я разрабатывал приложение и у меня возникли некоторые проблемы с использованием Entity Framework.Итак, проблема в том, что я хочу сохранить сложную модель в базе данных, используя ленивую загрузку.Я создал классы, добавил внешние ключи, объявил коллекции как виртуальное свойство.Затем я создал базу данных и добавил в таблицу объект (у этого объекта есть коллекция других элементов, связанных внешним ключом).В конце концов, я сохранил изменения и снова открыл базу данных и попытался получить мой сохраненный объект.Но у объекта была коллекция с нулевыми элементами, но я добавил к ней многие из них.Я запутался, где я могу найти нужную информацию (я читал, что многие форумы не находят подходящей)?Заранее спасибо.

Модели:

    public class Word
    {
        public int? Id { get; set; }
        public string MainWord { get; set; }
        public string UkTranscription { get; set; }
        public string UsaTranscription { get; set; }
        public string UkPronunciation { get; set; }
        public string UsaPronunciation { get; set; }
        public string Head { get; set; }
        public virtual ICollection<Meaning> Meanings { get; set; }
        public Word()
        {
            Meanings = new List<Meaning>();
        }
    }
    public class Meaning
    {
        public int? Id { get; set; }      
        public string Level { get; set; }
        public string Head { get; set; }
        public string Defenition { get; set; }
        public virtual ICollection<Example> Examples { get; set; }

        public int? WordId { get; set; }
        public virtual Word Word { get; set; }
        public Meaning()
        {
            Examples = new List<Example>();
        }

    }
    public class Example
    {
        public int? Id { get; set; }
        public int? MeaningId { get; set; }

        public string example { get; set; }

        public virtual Meaning Meaning { get; set; }

    }
    public class WordContext : DbContext
    {
        public DbSet<Word> Words { get; set; }
        public DbSet<Meaning> Meanings { get; set; }
        public DbSet<Example> Examples { get; set; }
        public WordContext(): base("name=WordContext")
        {

        }

    }

Вот код для сохранения и повторного открытия базы данных.

        using (WordContext db = new WordContext())
        {
            var example = db.Examples.Create();
            var meaning = db.Meanings.Create();
            var word = db.Words.Create();
            example.example = "some data";
            meaning.Defenition = "defenition";
            meaning.Examples.Add(example);
            db.Words.Add(word);
            //db.Meanings.Add(meaning);do I need to remove this comments?
            //db.Examples.Add(example); 
            db.SaveChanges();  
        }
        using (WordContext db = new WordContext())
        {
            foreach (var item in db.Words)
            {
                Console.WriteLine(item.Meanings.Count);//zero, why?
            }
        }
...