我的同事帮助我开始使用 c# 编程,虽然我没有经验,但我喜欢它。一切都很顺利,直到我遇到了一些我们都无法解决的问题。他自己使用 SQL,但让我开始使用 LINQ。
要进行 LINQ 查询,我使用此对象:_oDBConnection(在 clsApplication.cs 中)因此,当打开程序时,会构建此对象。但它会产生一些问题:
- 保存新对象(将数据放入表中)时,我无法通过查询加载这些值。我需要重新启动程序。
- 当运行程序的 2 个实例时,一个在另一个实例中更改时没有获得最新的值(但它显示的是新的值,而不是更改的值!)
根据这些问题,我只能得出结论,当我第二次调用 clsApplication._oDBConnection.tblTAble 时,它不会再次重新链接到数据库,而是将旧的数据库状态返回给我。
这是他构建的代码:
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();
}
提前谢谢