2010-03-28 9 views
0

我之前已經發布過一些問題,但它有所不同。我應該從我的模型中刪除所有繼承以便與ria服務一起工作嗎?

因此,考慮我們的模型中的一小部分:

    • 客戶
    • 員工
    • 配偶

人是具有基類3從它繼承的類。

這4個在我們的設計中非常核心,並且鏈接到許多其他實體。 我可以通過刪除 繼承來解決我在ria服務中遇到的所有問題,但這確實會增加模型的複雜性。

我經歷是,我無法查詢爲客戶,員工或配偶,但是有人給我一個解決方案,這是像這樣的東西添加到的DomainService第一個問題:

public IQueryable<Employee> GetEmployees() 
    { 
     return this.ObjectContext.People.OfType<Employee>(); 
    } 

    public IQueryable<Customer> GetCustomers() 
    { 
     return this.ObjectContext.People.OfType<Customer>(); 
    } 

    public IQueryable<Spouse> GetSpouses() 
    { 
     return this.ObjectContext.People.OfType<Spouse>();    
    } 

下一頁我試過的東西,似乎非常正常的對我說:

var employee = new Employee() 
{ 
    //.... left out to reduce the length of this question 
}; 

var spouse = new Spouse() 
{ 
    //.... left out to reduce the length of this questions 
}; 

employee.Spouse = spouse; 

context.People.Add(spouse); 
context.People.Add(employee); 
context.SubmitChanges(); 

然後我得到以下異常:

無法檢索 派生實體類型「配偶」的實體集。使用 EntityContainer.GetEntitySet(類型)至 獲取爲基本實體 類型'Person'設置的實體。

即使配偶已經在數據庫中, 和我先檢索它,我也會得到類似的例外。

還要注意,由於某種原因,在一些地方「人」代替「人」 ......

那麼,如何解決這個問題,我在做什麼錯 ,我將繼續運行到在繼承使用ria服務時的牆壁?

我在網上找到了一些參考,都說它的工作原理,然後一些的DomainService 代碼中,他們suposedly改變的東西,但沒有詳細說明...

我使用VS2010 RC1 + Silveright 4

注:數據源窗口,可以神奇地運行在所有的MIX會議對我不起作用......它永遠不會顯示任何

回答

2

這種現象是由於在RC1的錯誤。這在http://forums.silverlight.net/forums/p/169599/384514.aspx#384514更詳細討論。

RC1沒有已知的解決方法,但是您顯示的層次結構應該在RC2中正常工作。這個bug集中在使用派生類型(EntityRef和EntityCollection)的關聯中,所以我懷疑配偶關聯是觸發了你的場景中的錯誤的原因。

關於「人員」訴「人員」 - 實體集合的名稱選擇來自EF對實體名稱的複數化。客戶端查詢的名稱來自DomainService中相應的查詢名稱,這意味着如果您願意,您可以公開IQueryable GetPeople()。

+0

謝謝!!!!這確實有幫助 – TimothyP 2010-04-05 16:37:07

相關問題