Таким образом, похоже, что EF Core в настоящее время не поддерживает отложенную загрузку. Это прибывает, но может быть некоторое время выключено.
На данный момент, если кто-то еще сталкивается с этой проблемой и борется. Ниже приведена демонстрация использования Eager loading , и это то, что вы сейчас должны использовать.
Скажем, до того, как у вас был объект person, и этот объект содержал список шляп в другой таблице.
Вместо того, чтобы писать
var person = _context.Person.Where(p=> p.id == id).ToList();
person.Hats.Where(h=> h.id == hat).ToList();
Вам нужно написать
var person = _context.Person.Include(p=> p.Hats).Where(p=> p.id == id).ToList();
И тогда person.Hats.Where(h=> h.id == hat).ToList();
будет работать
Если у вас есть несколько списков - включите в цепочку
var person = _context.Person.Include(p=> p.Hats).Include(p=> p.Tickets)
.Include(p=> p.Smiles).Where(p=> p.id == id).ToList();
Я понимаю, почему этот метод безопаснее, потому что вы не загружаете огромные наборы данных, которые могут замедлить работу. Но я надеюсь, что они скоро загрузят Lazy !!!
Caz
Если есть способ сделать это чисто, я об этом не знаю. Насколько я понимаю, у вас есть несколько вариантов:
Возможно, вы захотите взглянуть на некоторые Решения Qt, которые сделают хотя бы часть того, что вы хотите. Например, см. Решение Color Picker , которое, как они отмечают, теперь доступно как библиотека с лицензией LGPL.
В качестве альтернативного (и, вероятно, менее поддерживаемого) подхода, я вспоминаю некоторую работу в Qt-Labs о встраивании виджетов Qt, включая QDialog
s, в QGraphicsScene
. Вы могли бы сделать это, а затем изменить вид вашей графической сцены, чтобы пользователю была видна только часть диалогового окна выбора цвета, которая вас интересует. Однако это звучит очень хакерски.
Используйте QGraphicsView
и добавьте к нему QDialog
. И добавьте QGraphicsView
к виджету, если вы хотите показать диалог.