AsV*_*leO 2 c# xaml entity-framework eager-loading navigation-properties
在XAML中,DataGrid绑定到一个名为EF实体的列表Results.一列被绑定到Count的Buildings导航属性.延迟加载已关闭.所以我需要包含Buildings在查询中,以获得它的数量.这会导致性能问题,因为整个Buildings实体集合会在内存中加载.但我只需要Count它.有没有办法获得Count导航属性而不将其加载到内存中?
var resQuery =
db.BAStreets
.Include("Street.StreetType")
.Include("Area.District")
.Include("Buildings")
.Where(x => true);
Results = resQuery.ToList();
Run Code Online (Sandbox Code Playgroud)
在XAML中绑定:
<DataGridTextColumn Binding="{Binding Buildings.Count}"/>
Run Code Online (Sandbox Code Playgroud)
还有一点其他问题.我用它:.Where(x => true)将DbSet强制转换为IQueryable.看起来这是一种气味的东西.什么是标准模式?
如果您只是需要,Count那么您可以创建以下查询
Results = db.BAStreets.Select(i => new
{
Street = i,
StreetType = i.Street.StreetType,
District = i.Area.District,
BuildingCount = i.Buildings.Count()
}).ToList()
Run Code Online (Sandbox Code Playgroud)
然后在XAML中绑定到BuildingCount属性而不是另一个属性.
<DataGrid>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Street}"/>
<DataGridTextColumn Binding="{Binding StreetType }"/>
<DataGridTextColumn Binding="{Binding District }"/>
<DataGridTextColumn Binding="{Binding BuildingCount }"/>
</DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1745 次 |
| 最近记录: |