我正在使用WPF / MVVM探索实体框架,这可能是基本的,但我不能让它工作。我有一个包含两个实体的edmx图,OUTAGE_DETAILS和OUTAGE_TYPE_LOOKUP。我只想对其中一个实体进行linq并返回一个可以绑定到DataGrid的ObservableCollection。最后我将添加/修改DataGrid中的记录。我做错了什么,这是编辑和添加记录的最终结果的最佳方法吗?
这就是我所拥有的:
private Data_Entities oeContenxt = new Data_Entities();
private ObservableCollection<OUTAGE_DETAILS> _outagecollection;
public ObservableCollection<OUTAGE_DETAILS> OutageCollection
{
get { return _outagecollection; }
set
{
if (value == _outagecollection) return;
_outagecollection = value;
}
}
private void ShowOutages()
{
var query = (from o in oeContenxt.OUTAGE_DETAILS
select o.OUTAGE_SEQ_ID).ToList();
OutageCollection = new ObservableCollection<OUTAGE_DETAILS>(query.ToList()); // <- Error Here
}
// constructor
public MainWindowViewModel()
{
this.ShowOutages();
}
,错误是:
The best overloaded method match for 'System.Collections.ObjectModel.ObservableCollection<WpfApplication1.OUTAGE_DETAILS>.ObservableCollection(System.Collections.Generic.IEnumerable<WpfApplication1.OUTAGE_DETAILS>)' has some invalid arguments
我认为这是这种情况的一个常见错误,但我还没有找到解决方案。另外,我是否在我的馆藏声明中正确使用了实体名称OUTAGE_DETAILS?
对于非常基本的问题感到抱歉,但我正在尝试学习这些东西。谢谢你的帮助。
答案 0 :(得分:0)
用EF获取数据,
public ObservableCollection<OUTAGE_DETAILS> LoadOutageDetails()
{
// Charge les données (Load data)
oeContenxt.OUTAGE_DETAILS.Load();
return oeContenxt.OUTAGE_DETAILS.Local;
}
在视图后面的代码中使用它:
dtgrid.ItemsSource = LoadOutageDetails();
或者使用MVVM,将vm绑定到View的dataContext上
this.DataContext = new MyViewModel();
在视图的XAML中:
<DataGrid ItemsSource="{Binding AllOutageDetails}"></DataGrid>
你的VM:
class MyViewModel{
private ObservableCollection<OUTAGE_DETAILS> _allOutageDetails;
/// <summary>
/// ObservableCollection de tous les outage details
/// </summary>
public ObservableCollection<OUTAGE_DETAILS> AllOutageDetails
{
get
{
return _allOutageDetails;
}
set
{
_allOutageDetails= value;
}
}
public MyViewModel()
{
_allOutageDetails = LoadOutageDetails();
}
}
享受自己!