【发布时间】:2011-07-20 23:17:52
【问题描述】:
我想使用实体框架将 2 个相关表(Northwind 数据库、Orders 和 Orders_Details 表)加载到两个 CollectionView 中。
<Window.Resources>
<CollectionViewSource x:Key="OrdersView" />
<CollectionViewSource x:Key="OrdersDetailView"
Source="{Binding Source={StaticResource OrdersView},
Path='Order_Details'}" />
</Window.Resources>
<Grid DataContext="{Binding Source={StaticResource OrdersView}}">
<Grid.RowDefinitions>
<RowDefinition Height="187*" />
<RowDefinition Height="124*" />
</Grid.RowDefinitions>
<StackPanel>
<DataGrid AutoGenerateColumns="True" ItemsSource="{Binding}" Height="187" HorizontalAlignment="Left" Name="dataGrid1" VerticalAlignment="Top" Width="503"/>
</StackPanel>
<StackPanel Grid.Row="1">
<DataGrid AutoGenerateColumns="True" IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding Source={StaticResource OrdersDetailView}}" Height="124" HorizontalAlignment="Right" Name="dataGrid2" VerticalAlignment="Top" Width="503" />
</StackPanel>
</Grid>
public MainWindow()
{
InitializeComponent();
List<Order> list = new List<Order>();
using (NorthwindEntities nwe = new NorthwindEntities())
{
list = nwe.Orders.Include("Order_Details").ToList();
}
Window win = Application.Current.MainWindow;
var ordersViewSource = win.FindResource("OrdersView") as CollectionViewSource;
ordersViewSource.Source = list;
//var ordersDetailView = win.FindResource("OrdersDetailView") as CollectionViewSource;
}
当我运行这段代码时,我得到一个异常:
ObjectContext 实例已被 处置,不能再用于 需要连接的操作。
编辑
如果我删除 Using 部分它可以工作,但我想将所有内容加载到内存中并关闭连接。
我厌倦了使用延迟加载:
using (NorthwindEntities nwe = new NorthwindEntities())
{
nwe.ContextOptions.LazyLoadingEnabled = true;
list = nwe.Orders.ToList();
}
没用。
【问题讨论】:
标签: c# wpf entity-framework