Veg*_*gar 5 c# wpf datacontext linq-to-sql
在显示我的主窗口时,我从linq-to-sql中创建了一个对象列表:
using (var context = new Data.TVShowDataContext())
{
Shows = new ObservableCollection<Data.Show>(context.Shows);
listShows.ItemsSource = Shows;
}
Run Code Online (Sandbox Code Playgroud)
现在,当我双击列表中的项目时,我想在新的usercontrol中使用所选对象:
ShowEpList epList = new ShowEpList();
epList.DataContext = (Data.Show)listShows.SelectedItem;
Run Code Online (Sandbox Code Playgroud)
现在,这会导致异常:
System.ObjectDisposedException未处理
Message ="无法访问已处置的对象.\ r \n对象名称:'Dispose后访问的DataContext'."
Source ="System.Data.Linq"
ObjectName ="Dispose后访问的DataContext".
我想这是因为将列表绑定到节目季节列表,并且需要填充季节列表或者其他内容:
<ListBox Name="listSeasons" ItemsSource="{Binding Seasons}"/>
Run Code Online (Sandbox Code Playgroud)
现在,我想知道的是,这应该怎么做?我是否需要创建一个新的DataContext对象并再次检索所选的节目,或者是否可以使用新的datacontext重新连接我的节目以填充季节列表?
我想我有点失落了....
Jos*_*lio 10
不要在datacontext中使用"using"语句.请参阅这篇文章:处理DataContext
当你使用一个using()
块时,它会调用Dispose()
你放入初始化程序的任何东西(在这种情况下,你的上下文).当处置LINQ to SQL上下文时,使用它创建的实体也是如此.我建议在你Form
的上下文中创建一个实例变量,并将代码插入你的For
m Dispose(bool)
函数(它在Designer.cs
文件中)来处理上下文.