我的同事幫助我在c#中開始編程,雖然我沒有經驗,但我喜歡它。一切都很順利,直到我遇到了一些我們都無法解決的問題。他自己使用SQL,但是用LINQ開始了我。刷新LINQ數據庫連接對象
做一個LINQ查詢我使用這個對象:_oDBConnection(in clsApplication.cs) 所以當打開程序時,這個對象是建立的。但它會產生一些問題:
- 當保存一個新對象(將數據放入表中)時,我無法在查詢中加載這些值。我需要重新啓動程序。
- 當運行PROGRAMM的2個實例,在其他變化時,一個是沒有得到的最新值(但它正顯示出新的,但沒有改變的!)
針對這些問題,我可以只能得出結論,當我第二次調用clsApplication._oDBConnection.tblTAl時,它不會再次重新連接到數據庫,而是將舊的db狀態返回給我。
這是他建立了代碼:
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
「public static DBReservationDataContext _oDBConnection;」沒有。不,不,不,不。不,不!使用每個datacontext實例來完成一個工作單元。然後處理它(因爲它實現了IDisposable)併爲下一個工作單元創建一個新的工作單元。 –