我在 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?
最佳答案
默认情况下,是的,每个 RIA 域服务都会被创建、初始化,然后它会执行您的请求。
所以新的 ObjectContext 无论如何都会直接从数据库中获取对象,因此它将包含其他服务所做的更改。
关于c# - 每个 RIA 查询都会创建不同的 EF 对象上下文吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8238702/