3

Silverlight アプリケーションで EF4/RIA コンボを使用しています。

に複数のサービス メソッドがありますDomainService

メソッドの 1 つは、データベースからいくつかのデータを取得し、オブジェクトの値を変更します。

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のは、2 番目のサービス メソッドでのこの呼び出しが、最初のサービス メソッドの呼び出しで行われた変更に影響するかどうかです。

それとも、すべての RIA クエリ/サービス呼び出しで新しい EF ObjectContext が作成されますか?

4

1 に答える 1

0

デフォルトでは、すべての RIA ドメイン サービスが作成され、初期化されてから、リクエストが実行されます。

したがって、新しい ObjectContext はデータベースからオブジェクトを直接フェッチするため、他のサービスによって行われた変更が含まれます。

于 2011-11-23T10:00:37.143 に答える