我在刷新数据库中的对象时遇到问题。我有两台电脑和两个应用程序。
在第一台 PC 上,有一个应用程序与我的数据库通信并向测量表添加一些数据。
在我的另一台 PC 上,有一个应用程序可以在计时器下检索最新的测量值,因此它也应该检索由我的第一台 PC 上的应用程序添加的测量值。
问题是事实并非如此。在我的应用程序启动时,它会缓存数据库中的所有数据,并且永远不会添加新数据。我使用 Refresh() 方法,当我更改任何缓存的数据时,该方法效果很好,但它不会刷新新添加的数据。
这是我应该更新数据的方法:
public static Entities myEntities = new Entities();
public static Measurement GetLastMeasurement(int conditionId)
{
myEntities.Refresh(RefreshMode.StoreWins, myEntities.Measurements);
return (from measurement in myEntities.Measurements
where measurement.ConditionId == conditionId
select measurement).OrderByDescending(cd => cd.Timestamp).First();
}
附:
应用程序在 app.config 中有不同的连接字符串(同一数据库的不同帐户)。
这应该有效:
public static Entities myEntities = new Entities();
public static Measurement GetLastMeasurement(int conditionId)
{
myEntities.Refresh(RefreshMode.StoreWins, myEntities.Measurements);
var allMeasurements = myEntities.Measurements.ToList();//retrieves all measurements from database
return (from measurement in allMeasurements
where measurement.ConditionId == conditionId
select measurement).OrderByDescending(cd => cd.Timestamp).First();
}
当您每次想要使用存储时都刷新存储时,缓存有何意义?你可以将其更改为:
public Measurement GetLastMeasurement(int conditionId)
{
var entities = new Entities();
return (from measurement in entities.Measurements
where measurement.ConditionId == conditionId
select measurement).OrderByDescending(cd => cd.Timestamp).First();
}
每次调用时它还会在数据库中查找,但操作量要少得多。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)