0

別のフォームでエンティティを更新した後、グリッドにデータをリロードしたいのですが、更新されていないようです。

        private void LoadData()
    {
        siparisBindingSource.DataSource = db.Siparis.Include("Kazan").ToList();
    }

データをロードするには、ダイアログを開いた後:

        private void değiştirToolStripMenuItem_Click(object sender, EventArgs e)
    {
        Siparis siparis = gridView1.GetFocusedRow() as Siparis;

        if (siparis != null)
        {
            FormSiparisAddEdit siparisAddEdit = new FormSiparisAddEdit {isedit = true, sipID = siparis.ID};
            siparisAddEdit.ShowDialog();
            LoadData();
        }
    }

エンティティを変更して、このメソッドを使用してリロードしようとしましたが、フォームを閉じて再度開かない限り、内容は同じままです。ここで何が欠けていますか?

答えを乾杯しますが、現在別の問題があります。データベースを短命にしたため、詳細データを取得できません。次を使用してみました:

        private void gridView1_MasterRowGetChildList(object sender, DevExpress.XtraGrid.Views.Grid.MasterRowGetChildListEventArgs e)
    {
        Siparis siparis = (Siparis)gridView1.GetRow(e.RowHandle);
        using (var db = new Tank_Analizor_DBEntities())
        {
            db.Siparis.Attach(siparis);
            e.ChildList = new BindingSource(siparis, "Kazan");
        }

    }

しかし、私は得る

The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.

エラー、デバッグすると、子リストは詳細データを取得します...

4

2 に答える 2

2

問題は、静的またはメンバー データ コンテキストを使用しているように見えることです。使用するたびに新しいコンテキストを作成する必要があります。これは、Entity Framework が使用されるように設計されている方法です。

したがって、このコードを変更します。

private void LoadData()
{
    using (var db = new WhateverYourContextNameIs()) {
        siparisBindingSource.DataSource = db.Siparis.Include("Kazan").ToList();
    } 
}
于 2013-08-07T22:27:40.723 に答える