特定のフォームを開くと、このエラーが発生します。残りは正常に機能していますが、なぜこれがうまくいかないのかわかりません。
エラー: 新しいものではないエンティティをアタッチまたは追加しようとしました。別の DataContext から読み込まれた可能性があります。これはサポートされていません。
保存しようとすると、_oDBConnection でエラーが発生します。コードの実行中に _oDBConnection を監視すると、存在しません。メインウィンドウを開いても存在しません。したがって、このフォームは、DataContext が初めて構築される場所です。
すべてのクラスは、DataContext が構築される clsBase から継承します。
私の同僚は、すべてを構築したプロです。私はそれを拡張して使用しているだけです(実行して学習しました)。しかし今、私は立ち往生しており、彼は休暇中です。だからシンプルにしてください:-)
それは何でしょうか?
clsPermanency
namespace Reservation
{
class clsPermanency : clsBase
{
private tblPermanency _oPermanency;
public tblPermanency PermanencyData
{
get { return _oPermanency; }
set { _oPermanency = value; }
}
public clsPermanency()
: base()
{
_oPermanency = new tblPermanency();
}
public clsPermanency(int iID)
: this()
{
_oPermanency = (from oPermanencyData in _oDBConnection.tblPermanencies
where oPermanencyData.ID == iID
select oPermanencyData).First();
if (_oPermanency == null)
throw new Exception("Permanentie niet gevonden");
}
public void save()
{
if (_oPermanency.ID == 0)
{
_oDBConnection.tblPermanencies.InsertOnSubmit(_oPermanency);
}
_oDBConnection.SubmitChanges();
}
}
}
clsBase
public class clsBase
{
protected DBReservationDataContext _oDBConnection;
protected int _iID;
public int ID
{
get { return _iID; }
}
public DBReservationDataContext DBConnection
{
get { return _oDBConnection; }
}
public clsBase()
{
_oDBConnection = new DBReservationDataContext();
}
}