#c# #wpf #entity-framework #xaml #entity-framework-core
Вопрос:
- В моем приложении WPF (netcore3.1-windows) EFCore 5 нет исходных данных, когда я привязываю имя другого пользователя.
- Данные изначально загружаются в том же приложении, но с помощью WPF (net40) Приложение EFCore 6 из загрузки страницы:
public partial class Entity
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public virtual AnotherEntity AnotherEntity { get; set; }
...
}
...
WPFPage()
{
_entities = DBContext.Entities.ToList();
}
<ListView ItemsSource="{Binding _entities}" ...> ...
<GridView>
<!--with FECore5 no data here. But in EF6 there is.-->
<GridViewColumn DisplayMemberBinding="{Binding Entity.AnotherEntityName}"
Header="Entity"
Width="100"></GridViewColumn>
</GridView>
...
Если я не получу доступ и не загружу другие объекты базы данных из свойства AnotherEntities в коде приложения:
public AnotherWPFPage() { _anotherEntities = DBContext.AnotherEntities.ToList(); }
Или если я явно задам привязку как
<GridViewColumn DisplayMemberBinding="{Binding Entity.AnotherEntity.AnotherEntityName}"
Связано ли это с ошибкой построения базы данных с помощью Fluent Api, функции привязки xaml или функции EntityFrameworkCore?.
Комментарии:
1. @AndriyShevchenko, похоже, мне придется создать что-то вроде локальной переменной «var list = DbContext. Еще одна мелочь. ToList();» перед _entities = DbContext.Сущности. ToList(); раньше, потому что только включение других сущностей в запрос вместе с сущностями не работает.
Ответ №1:
У меня нет доступа к вашей полной базе кода, но я предполагаю, что это связано с функцией ленивой загрузки ядра EF, и ее динамические прокси могут не работать с привязкой WPF. В вашем коде измените это
_entities = DBContext.Entities.ToList();
К этому
_entities = DBContext.Entities
.Include(x => x.AnotherEntity)
.ToList();