我的同事帮助我在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)并为下一个工作单元创建一个新的工作单元。 –