私は自分のウェブページにデータを提供するために 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 インターフェイスを削除すると、すべてが機能します。