C# 实体框架和可观察集合
我正在探索使用WPF/MVVM的实体框架,这可能是最基本的,但我无法让它工作。我有一个edmx图,它包含两个实体:大修详细信息和大修类型查找。我只想对其中一个实体执行linq,并返回一个ObservableCollection,我可以将其绑定到DataGrid。最后,我将从DataGrid添加/修改记录。我做错了什么?这是编辑和添加记录最终结果的最佳方法吗 这就是我所拥有的:C# 实体框架和可观察集合,c#,wpf,linq,entity-framework,mvvm,C#,Wpf,Linq,Entity Framework,Mvvm,我正在探索使用WPF/MVVM的实体框架,这可能是最基本的,但我无法让它工作。我有一个edmx图,它包含两个实体:大修详细信息和大修类型查找。我只想对其中一个实体执行linq,并返回一个ObservableCollection,我可以将其绑定到DataGrid。最后,我将从DataGrid添加/修改记录。我做错了什么?这是编辑和添加记录最终结果的最佳方法吗 这就是我所拥有的: private Data_Entities oeContenxt = new Data_Entities(); pri
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();
}
private Data_Entities oeContenxt=new Data_Entities();
私人可观测收款(outagecollection);;
公共可观察到的收款支出收款
{
获取{return\u outagecollection;}
设置
{
if(value==\u outagecollection)返回;
_outagecollection=价值;
}
}
私有void显示中断()
{
var query=(来自oeContenxt.out\u详细信息中的o)
选择o.output_SEQ_ID).ToList();
OutageCollection=new ObservableCollection(query.ToList());//用于使用EF获取数据
public ObservableCollection<OUTAGE_DETAILS> LoadOutageDetails()
{
// Charge les données (Load data)
oeContenxt.OUTAGE_DETAILS.Load();
return oeContenxt.OUTAGE_DETAILS.Local;
}
或者使用MVVM,在视图的dataContext上绑定vm
this.DataContext = new MyViewModel();
在视图的XAML中:
<DataGrid ItemsSource="{Binding AllOutageDetails}"></DataGrid>
和您的虚拟机:
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();
}
}
类MyViewModel{
私人可观察收集(allOutageDetails);;
///
///可观察到的使用les大修详细信息
///
公共可观察收集分配详细信息
{
得到
{
返回分配详细信息;
}
设置
{
_allOutageDetails=值;
}
}
公共MyViewModel()
{
_allOutageDetails=LoadOutageDetails();
}
}
玩得开心!你能提供报告此错误的代码行吗?此代码段看起来有效,因此我们需要更多详细信息。谢谢@CryptoGuy,我包含了我的其余代码。(从oeContenxt.Output\u details中的o选择o.Output\u SEQ\u ID)。ToList()返回ID列表,而不是Output\u详细信息。尝试只选择“o”。感谢@jhenninger24返回所有字段和所有记录。如果我只想选择某些字段,该怎么办?如果我想更新/添加记录,我是否只需将它们添加到集合中,然后保存?
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();
}
}