使用wpf / linq对sql进行主细节绑定

时间:2008-12-11 14:57:30

标签: .net sql wpf linq

我正在尝试在wpf中创建linq to sql关系的主详细视图。视图将有两个组合框。一个用于选择主项目,另一个用于选择详细项目。

我使用ADO.Net数据集实现了这一点,该数据集包含两个表以及表之间的关系。第一个组合框与主场结合,第二个组合框与这种关系结合。

DataContext="{Binding Source={StaticResource ContactDataSet}, Path=Company}"

<ComboBox Name="comboBox_CompanyName" 
          ItemsSource="{Binding}"
          DisplayMemberPath="Company"
          IsSynchronizedWithCurrentItem="True"
          />

详情,Company2Contact是relationsip

<ComboBox Name="comboBox_ContactName" 
          ItemsSource="{Binding Path=Company2Contact}"
          DisplayMemberPath="Contact"                                  
          IsSynchronizedWithCurrentItem="True"                                  
          />

我希望使用linq to SQL实现类似的结果。如果将wpf datacontext设置为linqDataContext,我可以绑定到主数据ok但不能绑定到该关系。

我看过datacontext对象,似乎已经正确设置了。每个公司对象都存在,并包含一组Contact对象。

有谁知道如何绑定到存储在所选公司对象中的联系对象集合?

由于

1 个答案:

答案 0 :(得分:2)

如果启用了deferred loading(默认情况下),那么只有在需要时才会检索子对象(当第二个数据绑定访问它们时)。但是,对于延迟加载工作,datacontext需要保持活跃状态​​。如果要加载主/详细对象但只是查询主对象的datacontext,则此时它实际上不会检索详细信息。

另一种选择是使用数据上下文的LoadWith选项。您需要指定在加载主对象时还需要详细对象。

我个人在做什么(这可能是非常有争议的),但我倾向于让DataContext在我的屏幕生命中保持活着。它使事情变得如此简单,并且根本没有任何性能损失。我在我的ViewModel中执行此操作。我在那里保留了对DataContext的引用。

豫ICP备18024241号-1