0

私は自分のウェブページにデータを提供するために 1 つのクラスを使用していました。2クラスに変更したのでエラーになりました

The operation cannot be completed because the DbContext has been disposed.

Database から派生した 2 つのクラス public class SezonB : Database public class Siatkowka : Database

独自のコンストラクターはありません (デフォルトでは、デフォルトのコンストラクターを呼び出しています)

別のインスタンスから派生した 1 つのクラスが別のインスタンスの DbContext を破棄する理由がわかりません。PobierzRanking() がロードされた後、get PobierzSezony() のために DbContext が閉じられます。

これが私のクラスです。

データベースインスタンスを作成するための私の基本クラス

public abstract class Database : IDisposable
{
    #region Fields

    /// <summary>
    ///     Tutaj jest przechowywana lokalna baza danych
    /// </summary>
    protected PabLeweEntities Plentities;

    #endregion // Fields

    #region Constructor

    protected Database()
    {
        Plentities = new PabLeweEntities();
    }

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    private void Dispose(bool disposing)
    {
        if (disposing)
            if (Plentities != null)
            {
                Plentities.Dispose();
                Plentities = null;
            }
    }

    ~Database()
    {
        Dispose(false);
    }

    #endregion // Construtor
}

Web サイトには 3 つの ObjectDataSource があります

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="PobierzRanking"
                                          TypeName="PlazowkaLewe.Model.Siatkowka">
                        <SelectParameters>
                            <asp:Parameter Name="sortExpression" Type="String" />
                        </SelectParameters>
                    </asp:ObjectDataSource>

<asp:ObjectDataSource ID="ObjectDataSource6" runat="server" SelectMethod="PobierzSezony"
                                              TypeName="PlazowkaLewe.Model.SezonB">
                            <SelectParameters>
                                <asp:Parameter Name="sortExpression" Type="String" />
                            </SelectParameters>
                        </asp:ObjectDataSource>

<asp:ObjectDataSource ID="ObjectDataSource2" runat="server" SelectMethod="PobierzTurnieje"
                                              TypeName="PlazowkaLewe.Model.Siatkowka">
                            <SelectParameters>
                                <asp:Parameter Name="sortExpression" Type="String" />
                                <asp:SessionParameter Name="idTurnieju" SessionField="id_turnieju2" Type="Int32"/>
                            </SelectParameters>
                        </asp:ObjectDataSource>

IDisposable インターフェイスを削除すると、すべてが機能します。

4

0 に答える 0