3

我在 Silverlight 应用程序中使用 EF4/RIA 组合。

我的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?

4

1 回答 1

0

默认情况下,是的,每个 RIA 域服务都会创建、初始化,然后执行您的请求。

所以 new ObjectContext 无论如何都会直接从数据库中获取对象,因此它将包含其他服务所做的更改。

于 2011-11-23T10:00:37.143 回答