Здравствуйте. Есть проект winforms. Использую Entity. Есть 2 класса:
class Systems
{
public int SystemsId { get; set; }
public string Name { get; set; }
public virtual ICollection<Users> Users { get; set; }
}
class Users
{
public int UsersId { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public string SecondName { get; set; }
public int SystemsId { get; set; }
public virtual Systems System { get; set; }
}
На форме вот так вот подтягиваются данные:
Context db;
public Form1()
{
InitializeComponent();
db = new Context();
db.System.Load();
dataGridView1.DataSource = db.System.Local.ToBindingList();
}
Но почему то когда я в отладке заглядываю в дата соурс, там у каждой системы коллекция Users равна null. Почему так происходит? ведь по внешнему ключу данные должны подтягиваться. Вот скрины моих данных.
Подскажите пожалуйста, может я делаю что то не так?
Все дело в lazy load(ленивой загрузке) у Entity. Суть в том, что он подтягивает данные, только тогда, когда необходимо. Ты локально загрузил таблицу System, но Users ты не загрузил, соответственно не на что ссылаться.
db = new Context();
db.System.Load();
db.Users.Load();
dataGridView1.DataSource = db.System.Local.ToBindingList();
P.S. лучше не загружай локально данные, а сразу пиши db.System.ToBindingList(). Entity умный, и подгрузит сам все необходимые данные.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Необходимо найти данное словоВ одном списке содержатся строки таблицы, в другом-эти строки
Необходимо считать значение аа 37 00 00 в обратном порядке, чтобы получилось 00 00 37 ааПосле этого перевести из 16-го в 10-ое