Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架和可观察集合_C#_Wpf_Linq_Entity Framework_Mvvm - Fatal编程技术网

C# 实体框架和可观察集合

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

我正在探索使用WPF/MVVM的实体框架,这可能是最基本的,但我无法让它工作。我有一个edmx图,它包含两个实体:大修详细信息和大修类型查找。我只想对其中一个实体执行linq,并返回一个ObservableCollection,我可以将其绑定到DataGrid。最后,我将从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();
}
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();
        }
}