将 GridViewColumn 绑定到 List<EntityFrameworkCore's Entity> 中为空 属性
Empty property in Binding the GridViewColumn to List<EntityFrameworkCore's Entity>
- 当我绑定另一个实体的名称时,我的 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 的功能造成的数据库脚手架错误吗?
我无法访问您的完整代码库,但我认为这是由于 EF Core 延迟加载功能及其动态代理可能不适用于 WPF 绑定。
在你的代码中改变这个
_entities = DBContext.Entities.ToList();
对此
_entities = DBContext.Entities
.Include(x => x.AnotherEntity)
.ToList();
- 当我绑定另一个实体的名称时,我的 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 的功能造成的数据库脚手架错误吗?
我无法访问您的完整代码库,但我认为这是由于 EF Core 延迟加载功能及其动态代理可能不适用于 WPF 绑定。 在你的代码中改变这个
_entities = DBContext.Entities.ToList();
对此
_entities = DBContext.Entities
.Include(x => x.AnotherEntity)
.ToList();