私の同僚は、経験がなかったにもかかわらず、C# でプログラミングを開始するのを手伝ってくれましたが、気に入っています。私たちが両方とも修正できないいくつかの問題に遭遇するまで、すべてがうまくいきました. 彼自身は SQL を使用していますが、私は LINQ から始めました。
LINQ クエリを実行するには、次のオブジェクトを使用します: _oDBConnection (clsApplication.cs 内) したがって、プログラムを開くと、このオブジェクトが構築されます。しかし、それはいくつかの問題を引き起こします:
- 新しいオブジェクトを保存する (データをテーブルに入れる) ときに、それらの値をクエリで読み込むことができません。プログラムを再起動する必要があります。
- プログラムの 2 つのインスタンスを実行している場合、一方が他方で変更されたときに最新の値を取得していません (ただし、変更されたものではなく、新しい値が表示されます!)
これらの問題によると、clsApplication._oDBConnection.tblTAble を 2 回目に呼び出すと、db に再度リンクするのではなく、古い db-states が返されると結論付けることができます。
これは彼が構築したコードです:
public static DBReservationDataContext _oDBConnection;
private static frmMain _fMain;
public clsApplication()
{
Thread.CurrentThread.Name = "main";
clsErrorLog.ErrorLocation = "C:\\Software\\ErrorLog";
clsErrorLog.setPassword("*****");
clsErrorLog.LockApplication += new clsErrorLog.dLockApplication(lockApplication);
_oDBConnection = new DBReservationDataContext();
_fMain = new frmMain();
_fMain.Show();
}
この問題を解決するにはどうすればよいですか?
例:
データベースには存在しますが、id == iID を持つエンティティが見つからないため、このクエリでクラッシュします。しかし、iID は正しく、データベースに存在します。クエリは、プログラムを閉じて再起動した後に機能します。その後、clsApplication が再度呼び出されます。
public clsReservationDetail(int iID)
:this()
{
_oReservationDetail = (from oReservationDetailQuery in clsApplication._oDBConnection.tblReservationDetails
where oReservationDetailQuery.ID == iID
select oReservationDetailQuery).First();
}
thx事前に