Как остановить службу данных WCF для получения данных при сохранении изменений (во время обновления) - PullRequest
0 голосов
/ 18 мая 2011

Я пытаюсь обновить сущность из клиента 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();

Когда я пытаюсь сохранить измененную сущность, она сначала пытается загрузить эту сущность, используя запрос выбора (в базу данных)и затем выдает оператор 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 голосов
/ 18 мая 2011

Для WCF DataServices клиент может обновлять только объекты, которые он отслеживает.Поэтому он должен загрузить объект в клиент, прежде чем он сможет внести какие-либо изменения и сохранить его обратно.Вот почему вы видите выборку (я предполагаю, что это первая выборка, которую вы видите для этой конкретной сущности) перед обновлением.Надеюсь, это поможет.

...