Экземпляр ObjectContext был удален и больше не может быть использован, возникает ошибка - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть приложение Windows Forms.У меня есть базовое окно, и я пытаюсь открыть окно поиска с сеткой данных.Я открываю настраиваемый элемент управления формы, как показано в следующем коде.а затем считайте выбранное значение в переменную в другой форме.

if (e.KeyCode == Keys.F3)
                {
                    using (DataControllers.RIT_Allocation_Entities RAEntity = new DataControllers.RIT_Allocation_Entities())
                    {
                        lookupGridSourceofJheader = RAEntity.JOB_Header.ToList<DataControllers.JOB_Header>();
                    }

                    var btnOk = new Button() { Text = "Ok", Anchor = AnchorStyles.None };
                    var btnCancel = new Button() { Text = "Cancel", Anchor = AnchorStyles.Right };

                    var dg = new DataGridView();
                    var bs = new BindingSource();

                    bs.DataSource = lookupGridSourceofJheader;
                    dg.DataSource = bs;
                    dg.Dock = DockStyle.Fill;
                    dg.SelectionMode = DataGridViewSelectionMode.FullRowSelect;

                    //setup a layout which will nicely fit to the window
                    var layout = new TableLayoutPanel();
                    layout.Controls.Add(dg, 0, 0);
                    layout.SetColumnSpan(dg, 2);
                    layout.Controls.Add(btnCancel, 1, 1);
                    layout.Controls.Add(btnOk, 0, 1);
                    layout.RowStyles.Add(new RowStyle(SizeType.Percent));
                    layout.RowStyles.Add(new RowStyle(SizeType.AutoSize));
                    layout.ColumnStyles.Add(new ColumnStyle(SizeType.Percent));
                    layout.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize));
                    layout.Dock = DockStyle.Fill;

                    //create a new window and add the cotnrols
                    var window = new Form();
                    window.StartPosition = FormStartPosition.CenterScreen;
                    window.Controls.Add(layout);

                    // set the ok and cancel buttons of the window
                    window.AcceptButton = btnOk;
                    window.CancelButton = btnCancel;
                    btnOk.Click += (s, ev) => { window.DialogResult = DialogResult.OK; };
                    btnCancel.Click += (s, ev) => { window.DialogResult = DialogResult.Cancel; };

                    if (window.ShowDialog() == DialogResult.OK)
                    {
                        selectedJobheader = (DataControllers.JOB_Header)bs.Current;
                        txtJID.Text = selectedJobheader.JobID.ToString();
                        txtCustomer.Text = selectedJobheader.CustomerCode.ToString();
                        txtCustomerName.Text = selectedJobheader.CustomerName.ToString();
                        txtRemarks.Text = selectedJobheader.Remarks.ToString();
                        if (selectedJobheader.Status)
                        {
                            txtStatus.Text = "Pending";
                        }
                        else
                        {
                            txtStatus.Text = "Done";
                        }

                        dtpDate.Value = selectedJobheader.JobDate;
                        lblCustomerTelephone.Text = selectedJobheader.MobileNo.ToString();
                        lblCusLocation.Text = selectedJobheader.LocationCode.ToString();
                        populateJdetailsDatagrid();

                    }
                }

Когда я пытаюсь прокрутить таблицу данных, возникает следующая ошибка:

--------------------------- Диалоговое окно ошибок по умолчанию для DataGridView ---------------------------В DataGridView возникло следующее исключение:

System.Reflection.TargetInvocationException: средство доступа к свойству 'Job_Details' для объекта 'System.Data.Entity.DynamicProxies.TBLM_PRODUCT_5D1C9C0350626BB4D225EEFBEBEEFEBD2252EBEBDF2EBDF2EBEFDF2EBEFEBEFDи больше не может использоваться для операций, требующих подключения. '---> System.ObjectDisposedException: экземпляр ObjectContext был удален и больше не может использоваться для операций, требующих подключения.

в System.Data.Entity.Core.Objects.ObjectContext.get_Connection ()

в System.Data.Entity.Core.Objects.ObjectQuery 1.GetResults(Nullable 1 forMergeOption)

в System.Data.Entity.Core.Objects.ObjectQuery`1.Execute (MergeOption mergeOption)

в System.Data.Entity.Core.Objects.DataClasses.EntityCollection 1.Load(List 1 коллекция, MergeOption mergeOption)

в System.Data.Entity.Core.Objects.DataClasses.EntityCollection`1.Load (MergeOption mergeOption)

в System.Data.Entity.Core.Objects.DataClasses.RelatedEnd.Load ()

в System.Data.Entity.Core.Objects.DataClasses.RelatedEnd.DeferredLoad ()

в System.Data.Entity.Core.Objects.Internal.LazyLoadBehavior.LoadProperty [TItem] (TItem propertyValue, String отношенияхName, String targetRoleName, логическое * mustBeNull, объектная оболочка 10Ob)27

в System.Data.Entity.Core.Objects.Internal.LazyLoadBehavior. <> C__DisplayClass7`2.b__1 (TProxy прокси, TItem пункт)

в System.Data.Entity.DynamicProxies.TBLM_PRODUCT_5D1C9C0350626BB4D225E83C26CEC12F74C76AE392AE2AD916BEFD258BCBEF2A.get_Job_Details ()

--- Конец трассировки стека внутренних исключений ---

в System.ComponentModel.ReflectPropertyDescriptor.GetValue (компонент объекта)

в System.Windows.Forms.DataGridView.DataGridViewDataConnection.GetValue (Int32 boundColumnIndex, Int32 columnIndex, Int32 rowIndex)

Чтобы заменить это диалоговое окно по умолчанию, обработайте событие DataError.

--------------------------- ОК

...