Выборка данных из бд MS SQL

258
03 марта 2018, 17:39

Здравствуйте. Есть проект 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. Почему так происходит? ведь по внешнему ключу данные должны подтягиваться. Вот скрины моих данных.

Подскажите пожалуйста, может я делаю что то не так?

Answer 1

Все дело в 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 умный, и подгрузит сам все необходимые данные.

READ ALSO
Скрытное управление звуком

Скрытное управление звуком

Нашёл следующий код(рабочий, проверял):

175
Почему в результате запроса ничего нет?

Почему в результате запроса ничего нет?

Разбирал пример, ссылка ниже: https://msdnmicrosoft

147
Как найти нужный элемент в List&lt;List&lt;string&gt;&gt;()?

Как найти нужный элемент в List<List<string>>()?

Необходимо найти данное словоВ одном списке содержатся строки таблицы, в другом-эти строки

184
Считать из файла и перевести из 16 в 10

Считать из файла и перевести из 16 в 10

Необходимо считать значение аа 37 00 00 в обратном порядке, чтобы получилось 00 00 37 ааПосле этого перевести из 16-го в 10-ое

196