如何在SavingChanges(更新期间)停止WCF数据服务以获取数据

时间:2011-05-17 21:58:03

标签: entity-framework-4 wcf-data-services

我正在尝试从WCF客户端更新实体,如下所示:

        Ctxt.MergeOption = MergeOption.NoTracking;
        var q = Ctxt.Customers.Where(p => p.MasterCustomerId == "JEFFERSON").Select(o => o);
        //DataServiceCollection<Customer> oCustomers = new DataServiceCollection<Customer>(q, TrackingMode.None);
        DataServiceCollection<Customer> oCustomers = new DataServiceCollection<Customer>(q);
        oCustomers[0].FirstName = "KEFFERSON";
        //Ctxt.SaveChanges(SaveChangesOptions.ReplaceOnUpdate);
        //ctxt.SaveChangesDefaultOptions = SaveChangesOptions.ReplaceOnUpdate;
        Ctxt.SaveChanges();

当我尝试保存修改后的实体时,它首先尝试使用select查询(到数据库)加载该实体,然后向数据库发出update语句。

在我的情况下,我只是希望在数据库中直接更新实体而不先获取它。我不介意它是否覆盖数据库中的数据

我在WCF服务上尝试了以下内容:

protected override EF.Model.DataModel.PersonifyEntities CreateDataSource()
{
    var ctxt = new EF.Model.DataModel.PersonifyEntities();
    ctxt.Customers.MergeOption = System.Data.Objects.MergeOption.NoTracking;
    ctxt.ContextOptions.ProxyCreationEnabled = false;
    ctxt.ContextOptions.LazyLoadingEnabled = false;
    return ctxt;
}

但是,没有运气。任何人都可以帮我吗?

1 个答案:

答案 0 :(得分:0)

对于WCF DataServices,客户端只能更新它跟踪的实体。因此,必须先将实体下载到客户端,然后才能进行任何更改并将其保存回来。这就是为什么你在更新之前看到fetch(我假设这是你在特定实体中看到的第一次获取)的原因。希望这会有所帮助。