2011-06-03 47 views
3

我有一個帶有EntityFramework的Silverlight 4應用程序作爲數據層。Silverlight + RIA:問題編輯實體

有兩個實體:客戶和產品。當我從數據庫中獲取客戶,相關產品也看過,因爲我加了相關的「包含」在客戶的元數據屬性和調用包含在GET查詢方法:

public IQueryable<customer> GetCustomerSetById(int customerId) 
{ 
    return this.ObjectContext.CustomerSet 
     .Include(o => o.Products) 
     .Where(o => o.Id = customerId); 
} 

的問題,當我改變任何財產客戶的產品,我得到這個異常:

這EntitySet的類型 「MyApp.Web.Models.Product」的不 支持「編輯」操作。

但是,如果我直接閱讀客戶產品,例如,不是通過客戶實體(CustomerContext),而是通過產品一(ProductContext)。

另外還有產品實體中的IsReadOnly = true屬性。

UPDATE:

我都CUD操作和也標誌着他們都與相關插入,更新和刪除屬性。否則它根本無法工作,但在我上面寫的一些情況下,它對我有用。

任何想法?

+0

啊 - 錯過了它在某些情況下工作的那一點。 – ChrisF 2011-06-03 16:30:30

+0

這是RIA + EF的真正問題,因此我們將所有實體保留在一個域服務中,因爲在客戶端,很難處理通過導航屬性相關的多個實體。想一想,它實際上沒有什麼區別,我們使用EF T4模板來生成一個類中的所有域服務操作。我們生成了部分方法來攔截域服務方法的邏輯。 – 2011-06-04 06:43:46

+0

@Akash Kava:看起來你對RIA和多個域名服務文件是正確的。如果我爲所有實體創建一個單獨的域服務 - 它可以工作。所以請將您的評論作爲答案 - 我會接受它。謝謝。 – Kamarey 2011-06-04 12:38:35

回答

2

這是RIA + EF,所以我們保持我們的所有實體在一個域中的服務,因爲在客戶端真正的問題是很難對付通過相關的多個實體導航屬性。想一想,它實際上沒有什麼區別,我們使用EF T4模板來生成一個類中的所有域服務操作。我們生成了部分方法來攔截域服務方法的邏輯。

0

這聽起來像你需要確保你的域名服務有更新操作。它會是這個樣子:

public void UpdateProduct(Product product) 
{ 
    ObjectContext.Products.AttachAsModified(product, ChangeSet.GetOriginal(product)); 
} 
+0

請參閱問題的更新。 – Kamarey 2011-06-03 18:35:44

0

RIA Services EntitySet does not support 'Edit' operation

由於上述的解決方案似乎沒有被幫助嘗試使用這樣的:

Domain Service Wizard

該向導應該看看你的實體,並生成適當的CRUD操作。 如果你然後不能更新你的實體你有一個不同的問題。

+0

我之前看到過這個問題,並沒有覺得有幫助。我的CustomerService已經有客戶CUD方法和相關的屬性。或者我錯過了什麼? – Kamarey 2011-06-03 19:13:34

+0

你是否直接調用更新方法? – BentOnCoding 2011-06-03 19:18:48

+0

不,我仍然不打電話給Update,因爲我在設置產品屬性時崩潰了:customer.Products.First()。Description =「something」;呼叫更新將是下一個問題。 – Kamarey 2011-06-03 19:35:38

0

您是否嘗試過將Include移動到最後?

Return this.ObjectContext.CustomerSet 
     .Include(o => o.Products) 
     .Where(o => o.Id = customerId); 

可能是:

Return (from o in this.ObjectContext.CustomerSet 
     where o.Id = customerId 
     select o).Include("Products"); 
+0

不要認爲這是問題,似乎IQuerible沒有包含方法。 – Kamarey 2011-06-03 20:15:20

相關問題