Уважаемые разработчики, я разрабатывал приложение и у меня возникли некоторые проблемы с использованием 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?
}
}