c# - 每个 RIA 查询都会创建不同的 EF 对象上下文吗?

标签 c# entity-framework ria objectcontext savechanges

我在 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/

相关文章:

c# - 重新保存Blazor WASM的.razor文件

c# - Entity Framework查询在23个子查询后失败,需要添加更多

c# - 如何在不使用 Entity Framework 获取值本身的情况下获取 blob 大小

c# - silverlight Match TimeoutInMilliseconds 错误 : resolve DomainServiceClientCodeGenerator

jquery - 如何创建自定义 "confirm"并暂停 js 执行直到用户单击按钮?

c# - 使用 Selenium Webdriver 测试 SSRS Reporting Services 报告

c# - 基础连接已关闭。 (HttpWebRequest)

c# - Linq 加入 Group By

c++ - 有没有办法让 Flex 从 DLL 访问 C++ 函数?

c# - 有效地将字节数组转换为十进制