【发布时间】:2014-10-22 19:42:01
【问题描述】:
我正在使用 WPF/MVVM 探索实体框架,这可能是最基本的,但我无法让它工作。我有一个包含两个实体 OUTAGE_DETAILS 和 OUTAGE_TYPE_LOOKUP 的 edmx 图。我只是想针对其中一个实体进行 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?
【问题讨论】:
-
能否提供报此错误的代码行?这段代码 sn-p 看起来有效,所以我们需要更多详细信息。
-
感谢@CryptoGuy,我包含了我的其余代码。
-
(from o in oeContenxt.OUTAGE_DETAILS select o.OUTAGE_SEQ_ID).ToList() 返回 Id 列表,而不是 OUTAGE_DETAILS。尝试只选择“o”。
-
感谢@jhenninger24 返回所有字段和所有记录。如果我只想选择某些字段怎么办?如果我想更新/添加记录,是否只需将它们添加到集合中然后保存?
标签: c# wpf linq entity-framework mvvm