Каждый запрос RIA создает другой контекст объекта EF? - PullRequest
3 голосов
/ 23 ноября 2011

Я использую комбо EF4 / RIA в приложении Silverlight.

У меня есть несколько методов обслуживания в моем DomainService.

Один из методов выбирает некоторые данные из базы данных, а затемизменяет значения объектов:

IEnumerable<Factor> GetModifiedFactors(double threshold)
{
    List<Factor> factors = ObjectContext.Where(f => f.Id == selectedId).ToList();

    for(int i = 1; i < factors.Count; i++)
    {
        Factor current = factors[i];
        Factor previous = factors[i - 1];

        // Note that here the value of the entity object has been changed
        current.Value = 2 * current.Value - 3 * previous.Value;
    }

    return factors.Where(f => f.Value > threshold);
}

Эти вычисленные значения затем возвращаются в приложение SL.

Обратите внимание, что в этом примере значение объекта сущности было изменено.

У меня есть другой сервис метод, который изменяет некоторые данные и затем вызывает .SaveChanges().

[Invoke]
public void ResetFactor(int factorId, double defaultValue)
{
    Factor factor = ObjectContext.Factors.FirstOrDefault(f => f.Id == factorId);

    if(factor == null)
        return;

    factor.Value = defaultValue;

    ObjectContext.SaveChanges();
}

Вопрос:

Что я хочу знать, так это то, повлияет ли этот вызов на SaveChanges во втором методе обслуживания на изменения, внесенные в вызов на метод первого сервиса?

Или каждый запрос / сервисный вызов RIA создает новыйEF ObjectContext?

1 Ответ

0 голосов
/ 23 ноября 2011

По умолчанию да, каждая Доменная служба RIA создается, инициализируется и затем выполняет ваш запрос.

Таким образом, новый ObjectContext в любом случае будет извлекать объекты непосредственно из базы данных, поэтому он будет содержать изменения, сделанные другим сервисом.

...