Я испытываю затруднения обновить объекты в моей базе данных. У меня есть два ПК и два приложения.
На первом ПК существует приложение, которое общается с моей базой данных и добавляет некоторые данные к таблице Measurements. На моем другом ПК существует приложение, какой retrives последнее Измерение под таймером, таким образом, это должно retrive измерения, добавленные приложением на моем первом ПК также.
Проблема - это, не делает. На моем приложении запускаются, оно кэширует все данные из базы данных, и никогда не добавляйте новые данные. Я использую Обновление () метод, который работает хорошо, когда я изменяю любые из кэшированных данных, но это не обновляет недавно добавленные данные.
Вот мой метод, который должен обновить данные:
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();
}
P.S. Приложения имеют различные строки подключения в app.config (различные счета на тот же DB).
Это должно сработать:
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();
}
Он также ищет в базе данных при каждом вызове, но выполняет гораздо меньше операций.