0

i know that this question have asked many times but i havent find any answer that can help me

the problem is
the-objectcontext-instance-has-been-disposed-and-can-no-longer-be-used-for-operations-that-require-a-connection

after i declare copy of entity object that have linked to other entity with 1 to many relation

this is the class

  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;
            }


        }
    }

this the entity

//------------------------------------------------------------------------------
// <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); }
         }
    }
}

this only relation that Have problem like this . yes i have forget to mention that i change the DBContext of the entity framework using this and this
and i am using entity framework 6.2

excuse my english i am not a good english writer .

Community
  • 1
  • 1
  • Where in the code do you declare and use an object context? Also, you should *never* use `async void` like that. It makes the method unawaitable, and "fire and forget" methods have a tendency to not report problems to the consuming code. – David Feb 28 '15 at 21:44
  • in the Constructer of the viewmodel that implement the edit control of this is the Constructer public LevelsPerYearNewVM(SchAvaiLevelsPerYear f, ObservableCollection _list) : base() { _CurrentLevelsPerYear =f; InitVars();} – Bassam Al-kebsi Feb 28 '15 at 21:49
  • If that code is included in the question, it's not obvious. There's a lot of difficult to read code there. If that code isn't included in the question, maybe including it might help us look at it? And I can't stress this enough... *do not use `async void`*. Use `async Task` and *await* the call to that method. – David Feb 28 '15 at 21:52
  • think you and i want to edit the question to Put all the class but i don't know how . sorry i havent used to use shift and enter to create new line – Bassam Al-kebsi Feb 28 '15 at 22:00
  • 3
    There's an "edit" link on the question. That can be used to edit the question. Please try to include only relevant code, and format the code to be cleanly readable. – David Feb 28 '15 at 22:02

0 Answers0