objectcontext实例不是null,但即使我声明它并给它相同的值,它也会处理掉

时间:2015-02-28 21:40:49

标签: c# .net wpf entity-framework mvvm

我知道这个问题多次问过,但我找不到任何可以帮助我的答案

问题是 -contextcontext-instance-has-dispos-and-can-no-used-for-operations-that-require-a-connection

在我声明已链接到具有1对多关系的其他实体的实体对象的副本

之后

这是班级

  using System;
    using System.Linq;
    using School.Component;
    using System.Windows.Input;
    using DataAccess;
    using  System.Collections.ObjectModel;
    using DataAccess.Repository;
    using Microsoft.Practices.Prism.Commands;
    using System.Collections.Generic;


    namespace School.WpfApp.ViewModels
    {
      public  class LevelsPerYearNewVM : ViewModelBase
        {

            SchAvaiLevelsPerYear _CurrentLevelsPerYear;
            SchAvaiLevelsPerYear _old;
            private bool _isnew = false;
            bool _IsEnabled = false;
            StudyYearRepository _Repository = new StudyYearRepository();
            SchoolSettingRepository _SRepository = new SchoolSettingRepository();
            ObservableCollection<StageLevel> _AllStageLevel;
            StageLevel _SelectrdStageLevel;
            ObservableCollection<SchAvaiLevelsPerYear> _allSchAvaiLevelsPerYear;
            ObservableCollection<CoursesLevelsPerStYear> _AllCoursesLevelsPerStYear;

            private string errorMasseg;

            public LevelsPerYearNewVM(SchAvaiLevelsPerYear f, ObservableCollection<SchAvaiLevelsPerYear> _list)
                : base()
            {    
          _old = (f);
                    CurrentLevelsPerYear  = new     SchAvaiLevelsPerYear()
                                {
                                    Avalible = f.Avalible,
                                    CoursCount = f.CoursCount,
                                    YearID = f.YearID,
                                    ID = f.ID,
                                    SchoolID = f.SchoolID,
                                    UserID = f.UserID,
                                    StageLevelID = f.StageLevelID,
                                };




                InitVars();
                CreateCommands();



                ErrorMasseg = "";
                if (_CurrentLevelsPerYear.ID > 0)
                { 
                    this.Title = "تعديل بيانات  المستوى الدراسي";
                  }
                else
                { this.Title = "اضافة مستوى  دراسي"; IsEnabled = true; _isnew = true; }

                _allSchAvaiLevelsPerYear = _list;

            }

            protected override async  void InitVars()
            {
                AllStageLevel = await _SRepository.GetAllStageLevelsIncludeCourses();

    if(!isnew)
    AllCoursesLevelsPerStYear = await _SRepository.GetAllAllCoursesLevelsPerStYearBySchAvaiLevelsPerYearID( _CurrentLevelsPerYear.ID);

            }

            protected override void CreateCommands()
            {
                SaveCommand = new RelayCommand(o =>
                {
                    Save();
                }
                , o => Valdite());

                CanselCommand = new DelegateCommand(() =>
                {
                    if (Closed != null)
                    {
                        _CurrentLevelsPerYear = null;
                        Closed(_CurrentLevelsPerYear);
                    }

                }
                , () => true);

            }

            private   void  Save()
            {
                SchAvaiLevelsPerYear a = null;
                string masseg = "";
                if (Valdite())
                {

                  a   = _allSchAvaiLevelsPerYear.FirstOrDefault(i => i.ID != CurrentLevelsPerYear.ID && i.StageLevelID == _CurrentLevelsPerYear.StageLevelID);

                    if (a == null)
                    {
                        _CurrentLevelsPerYear.CoursCount = _AllCoursesLevelsPerStYear.Where(cc=>cc.Avalible).Count();
                        _CurrentLevelsPerYear.UserID = Session.SessionData.CurrentUser.UserID;
                        _CurrentLevelsPerYear.ID =  _Repository.SaveSchAvaiLevelsPerYear(_CurrentLevelsPerYear);
                        CoursesLevelsPerStYear v;
                        foreach (CoursesLevelsPerStYear c in _AllCoursesLevelsPerStYear)
                        {

                            if (_isnew)
                                c.SALByYearID = _CurrentLevelsPerYear.ID;
                            c.UserID = Session.SessionData.CurrentUser.UserID;
                             v = (CoursesLevelsPerStYear)MyDataAccessTools.Clone<CoursesLevelsPerStYear>(c);
                            c.ID=      _Repository.SaveCoursesLevelsPerStYearDirctliy(v);

                        }
       ///// the error  massage aaper her when i use break point to know what are  the changes that have been done 
                       _CurrentLevelsPerYear.CoursesLevelsPerStYears = _AllCoursesLevelsPerStYear
       //////
      /////
                    }
                    else
                        masseg = "يوجد مستوى  دراسي  مماثل";
                }



                if (string.IsNullOrWhiteSpace(masseg))
                    Closed(a);

                else
                    ErrorMasseg = masseg;
            }
            private bool Valdite()
            {
                bool result = false;

                if (_CurrentLevelsPerYear != null && _CurrentLevelsPerYear.StageLevelID>0 )
                    result = true;

                return result;
            }

            public override void Reset()
            {


            }
            public SchAvaiLevelsPerYear CurrentLevelsPerYear
            {
                get { return _CurrentLevelsPerYear; }
                set
                {
                    if (_CurrentLevelsPerYear != value)
                    {
                        _CurrentLevelsPerYear = value;
                        NotifyPropertyChanged("CurrentLevelsPerYear");
                    }
                }
            }

            public ObservableCollection<StageLevel> AllStageLevel
            {
                get { return _AllStageLevel; }
                set
                {
                    if (_AllStageLevel != value)
                    {
                        _AllStageLevel = value;
                        NotifyPropertyChanged("AllStageLevel");
                    }
                }

            }
           public StageLevel SelectrdStageLevel
            {
                get { return _SelectrdStageLevel; }
                set
                {
                    if (_SelectrdStageLevel != value)
                    {
                        _SelectrdStageLevel = value;
                        NotifyPropertyChanged("SelectrdStageLevel");
                        if (_isnew)
                        {
                            ObservableCollection<CoursesLevelsPerStYear> allcby = new ObservableCollection<CoursesLevelsPerStYear>();
                            CoursesLevelsPerStYear cby;
                            foreach (CoursesByLevel cbl in _SelectrdStageLevel.CoursesByLevels)
                            {
                                cby = new CoursesLevelsPerStYear() {StartDate = Session.SessionData.CurrentYear.StartDate, Avalible =true 
                                    , CoursByLevelID = cbl.ID , CoursesByLevel= cbl, UserID = Session.SessionData.CurrentUser.UserID,
                                      MaxLecturePerWeak = cbl.MaxLecturePerWeak,MinLecturePerWeak = cbl.MinLecturePerWeak,
                                        SchAvaiLevelsPerYear = _CurrentLevelsPerYear 
                                };
                                allcby.Add(cby);
                            }
                            AllCoursesLevelsPerStYear = allcby;
                        }
                    }
                }

            }
        public   ObservableCollection<CoursesLevelsPerStYear> AllCoursesLevelsPerStYear
           {
               get { return _AllCoursesLevelsPerStYear; }
               set
               {
                   if (_AllCoursesLevelsPerStYear != value)
                   {
                       _AllCoursesLevelsPerStYear = value;
                       NotifyPropertyChanged("AllCoursesLevelsPerStYear");


                   }
               }
           }

        public bool IsEnabled
        {
            get { return _IsEnabled; }
            set
            {
                if (_IsEnabled != value)
                {
                    _IsEnabled = value;
                    NotifyPropertyChanged("IsEnabled");

                }
            }
        }
            public string ErrorMasseg
            {
                get { return errorMasseg; }
                private set
                {
                    if (value != errorMasseg)
                    {
                        errorMasseg = value;
                        NotifyPropertyChanged("ErrorMasseg");
                    }
                }
            }


            public event Action<SchAvaiLevelsPerYear> Closed;



            public ICommand SaveCommand
            {
                private set;
                get;
            }
            public DelegateCommand CanselCommand
            {
                private set;
                get;
            }


        }
    }

这个实体

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated from a template.
//
//     Manual changes to this file may cause unexpected behavior in your application.
//     Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------


namespace DataAccess
{
    using System;
    using System.Collections.ObjectModel;

    public partial class SchAvaiLevelsPerYear : BaseModel
    {
        public SchAvaiLevelsPerYear()
        {
            this.CoursesLevelsPerStYears = new ObservableCollection<CoursesLevelsPerStYear>();
            this.StduyYearLevelFrogs = new ObservableCollection<StduyYearLevelFrog>();
        }

        private int _iD;
        public int ID 
        { 
            get { return _iD; } 
            set { SetProperty(ref _iD, value); } 
        }

        private int _yearID;
        public int YearID 
        { 
            get { return _yearID; } 
            set { SetProperty(ref _yearID, value); } 
        }

        private int _stageLevelID;
        public int StageLevelID 
        { 
            get { return _stageLevelID; } 
            set { SetProperty(ref _stageLevelID, value); } 
        }

        private int _schoolID;
        public int SchoolID 
        { 
            get { return _schoolID; } 
            set { SetProperty(ref _schoolID, value); } 
        }

        private bool _avalible;
        public bool Avalible 
        { 
            get { return _avalible; } 
            set { SetProperty(ref _avalible, value); } 
        }

        private int _coursCount;
        public int CoursCount 
        { 
            get { return _coursCount; } 
            set { SetProperty(ref _coursCount, value); } 
        }

        private byte[] _timestamp;
        public byte[] Timestamp 
        { 
            get { return _timestamp; } 
            set { SetProperty(ref _timestamp, value); } 
        }

        private int _userID;
        public int UserID 
        { 
            get { return _userID; } 
            set { SetProperty(ref _userID, value); } 
        }


        public virtual Branch Branch { get; set; }
        public virtual ObservableCollection<CoursesLevelsPerStYear>       CoursesLevelsPerStYears { get; set; }
        public virtual StageLevel StageLevel { get; set; }
        public virtual StudyYear StudyYear { get; set; }
        public virtual ObservableCollection<StduyYearLevelFrog> StduyYearLevelFrogs { get; set; }
    }
}




//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated from a template.
//
//     Manual changes to this file may cause unexpected behavior in your application.
//     Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace DataAccess
{
    using System;
    using System.Collections.ObjectModel;

    public partial class CoursesLevelsPerStYear : BaseModel
    {
        public CoursesLevelsPerStYear()
        {
            this.CourseGroups = new ObservableCollection<CourseGroup>();
            this.Teachers = new ObservableCollection<Teacher>();
        }

        private int _iD;
        public int ID 
        { 
            get { return _iD; } 
            set { SetProperty(ref _iD, value); } 
        }

        private int _coursByLevelID;
        public int CoursByLevelID 
        { 
            get { return _coursByLevelID; } 
            set { SetProperty(ref _coursByLevelID, value); } 
        }

        private int _sALByYearID;
        public int SALByYearID 
        { 
            get { return _sALByYearID; } 
            set { SetProperty(ref _sALByYearID, value); } 
        }

        private int _maxLecturePerWeak;
        public int MaxLecturePerWeak 
        { 
            get { return _maxLecturePerWeak; } 
            set { SetProperty(ref _maxLecturePerWeak, value); } 
        }

        private int _minLecturePerWeak;
        public int MinLecturePerWeak 
        { 
            get { return _minLecturePerWeak; } 
            set { SetProperty(ref _minLecturePerWeak, value); } 
        }

        private bool _haveGroup;
        public bool HaveGroup 
        { 
            get { return _haveGroup; } 
            set { SetProperty(ref _haveGroup, value); } 
        }

        private bool _avalible;
        public bool Avalible 
        { 
            get { return _avalible; } 
            set { SetProperty(ref _avalible, value); } 
        }

        private Nullable<int> _holeID;
        public Nullable<int> HoleID 
        { 
            get { return _holeID; } 
            set { SetProperty(ref _holeID, value); } 
        }

        private bool _hasHole;
        public bool HasHole 
        { 
            get { return _hasHole; } 
            set { SetProperty(ref _hasHole, value); } 
        }

        private System.DateTime _startDate;
        public System.DateTime StartDate 
        { 
            get { return _startDate; } 
            set { SetProperty(ref _startDate, value); } 
        }

        private Nullable<System.DateTime> _stopDate;
        public Nullable<System.DateTime> StopDate 
        { 
            get { return _stopDate; } 
            set { SetProperty(ref _stopDate, value); } 
        }

        private byte[] _timestamp;
        public byte[] Timestamp 
        { 
            get { return _timestamp; } 
            set { SetProperty(ref _timestamp, value); } 
        }

        private int _userID;
        public int UserID 
        { 
            get { return _userID; } 
            set { SetProperty(ref _userID, value); } 
        }


        public virtual ObservableCollection<CourseGroup> CourseGroups { get; set; }
        public virtual CoursesByLevel CoursesByLevel { get; set; }
        public virtual Hole Hole { get; set; }
        public virtual SchAvaiLevelsPerYear SchAvaiLevelsPerYear { get; set; }
        public virtual ObservableCollection<Teacher> Teachers { get; set; }
    }
}


namespace DataAccess
{
    partial class CoursesLevelsPerStYear : BaseModel
    {



        private bool _CanEdit;
        public bool CanEdit
        {
            get { return _CanEdit; }
            set
            {
                SetProperty(ref _CanEdit, value);

            }
        }
        private bool _EditMode;
        public bool EditMode
        {
            get { return _EditMode; }
            set
            {
                SetProperty(ref _EditMode, value);

            }
        }

        string _EditButtonVisibility = "";
         public string EditButtonVisibility
         {
             get
             {
                 return _EditButtonVisibility;
             }
             set { SetProperty(ref _EditButtonVisibility, value); }
         }
    }
}

这个只有这样的问题的关系。是的,我忘了提到我使用thisthis更改了实体框架的DBContext 我正在使用实体框架6.2

原谅我的英语我不是一位优秀的英国作家。

0 个答案:

没有答案
相关问题