Платформа объекта - обновляет объекты от базы данных

Я испытываю затруднения обновить объекты в моей базе данных. У меня есть два ПК и два приложения.

На первом ПК существует приложение, которое общается с моей базой данных и добавляет некоторые данные к таблице 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).

10
задан Brian Tompsett - 汤莱恩 5 June 2015 в 22:00
поделиться

1 ответ

Это должно сработать:

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();
}

Он также ищет в базе данных при каждом вызове, но выполняет гораздо меньше операций.

9
ответ дан 3 December 2019 в 19:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: