0
我試圖從一個WCF客戶端更新實體如下:如何停止WCF數據服務來獲取數據時SavingChanges(更新中)
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();
當我試圖保存修改後的實體,它首先嚐試使用選擇查詢(對數據庫)加載該實體,然後將更新語句發佈到數據庫。
在我的情況下,我只是想讓實體在數據庫中直接更新而不需要先取得它。
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;
}
但是,沒有運氣:如果將覆蓋數據庫
我試圖在WCF服務的下列數據,我不介意。誰可以幫我這個事?
我知道需要將實體提供給客戶端的第一次獲取。我所關心的僅僅是「SaveChanges」期間的第二個問題。當我調試代碼時(來自VS和SQL Profiler),我可以看到在填充「DataServiceCollection」期間發生第一次讀取(SELECT)。當我打開/傳遞「SaveChanges」(在VS中)時,我看到另一個讀取(SQL Profiler中的另一個SELECT語句),後面跟着UPDATE語句。 – user203687 2011-05-18 16:35:24