首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实体框架和ObservableCollections

实体框架和ObservableCollections
EN

Stack Overflow用户
提问于 2014-10-23 03:42:02
回答 1查看 2.3K关注 0票数 0

我正在使用WPF/MVVM探索实体框架,这可能是最基本的,但我不能让它工作。我有一个包含两个实体OUTAGE_DETAILS和OUTAGE_TYPE_LOOKUP的edmx图。我只想对其中一个实体进行linq,并返回一个可以绑定到DataGrid的ObservableCollection。最终,我将从DataGrid添加/修改记录。我做错了什么,这是编辑和添加记录的最终结果的最佳方法吗?

这就是我所拥有的:

代码语言:javascript
复制
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?

EN

回答 1

Stack Overflow用户

发布于 2015-05-11 22:34:27

为了使用EF获取数据,

代码语言:javascript
复制
    public ObservableCollection<OUTAGE_DETAILS> LoadOutageDetails()
    {
        // Charge les données (Load data)
        oeContenxt.OUTAGE_DETAILS.Load();
        return oeContenxt.OUTAGE_DETAILS.Local;
    }

在视图后面的代码中使用它:

代码语言:javascript
复制
dtgrid.ItemsSource = LoadOutageDetails();

或者使用MVVM,将虚拟机绑定到视图的dataContext上

代码语言:javascript
复制
this.DataContext = new MyViewModel();

在视图的XAML中:

代码语言:javascript
复制
<DataGrid ItemsSource="{Binding AllOutageDetails}"></DataGrid>

和您的虚拟机:

代码语言:javascript
复制
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();
        }
}

祝你玩得开心!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26515776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档