我有一个数据库,其中包含一个名为“Article”的表(当然包含我的所有文章)和另一个名为“ArticleSupplier”的表(包含我的文章的供应商)。每篇文章都可以有多个供应商。
我所做的是使用Linq将我的表文章绑定到WPF列表视图,但我还需要显示我的文章的第一个供应商参考,所以我做了这种绑定:
DisplayMemberBinding="{Binding Path=ArticleSupplier[0].reference, Mode=OneWay}"
这项工作很好,除了性能之外,滚动是一个真正的痛苦,当然是由于我的绑定涉及的“子查询”的数量。
如何以最快的方式实现这一目标?我真的需要在listview中显示供应商参考(没有那个绑定,滚动性能真的很好)。
非常感谢你的帮助,我真的很不满意。
答案 0 :(得分:0)
您可以使用Include急切加载数据,这样一次性点击,滚动性能不会受到影响。
如果加载所需的额外时间将是一个问题,请使用BackgroundWorker进行加载或类似的技术。
您可以使用EF 4.1功能仅过滤引用中的第一个实体 - 例如C# Entity Framework 4.1 Lambda Include - only select specific included values
答案 1 :(得分:0)
我用以下方法解决了我的问题:
我在我的文章linq类中添加了一个名为firstReference的自定义字段,然后我修改了我的linq查询,所以它现在看起来像这样:
var articlesQuery = from art in QueryDataContext.Article
join artSup in QueryDataContext.ArticleSupplier on art.uid equals artSup.uidArticle
select new
{
Article = art,
firstSupplierUid = artSup.uid,
firstReference = artSup.reference,
firstFormat = artSup.format,
};
在我的XAML绑定中,而不是绑定在“ArticleSupplier [0] .reference”上,我只是绑定“firstReference”。
它似乎做得很好。