簡體   English   中英

為了使用ria服務,是否應該從模型中刪除所有繼承?

[英]Should I remove all inheritance from my model in order to work with ria services?

我之前對此發表了一些問題,但有所不同。

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

    • 顧客
    • 雇員
    • 伴侶

Person是具有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(Type)獲取基本實體類型“ Person”的實體集。

即使配偶已經在數據庫中,並且我先取回它,我也會遇到類似的異常。

另請注意,出於某些原因,在某些地方使用“人”代替“人” ...

那么我該如何解決這個問題,我在做什么錯?在使用帶有繼承的ria服務時,我會一直陷入困境嗎?

我在網上找到了一些參考資料,都說它可以正常工作,然后在其中的DomainService代碼中他們改變了某些內容,但沒有任何細節。

我正在使用VS2010 RC1 + Silveright 4

注意:神奇地在所有MIX會話中工作的數據源窗口對我而言不起作用...它從不顯示任何內容

此行為是由於RC1中的錯誤所致。 有關詳細信息,請參見http://forums.silverlight.net/forums/p/169599/384514.aspx#384514

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

關於“人”與“人”-實體集的名稱選擇來自EF對實體名稱的復數。 客戶端上的查詢名稱來自DomainService中的相應查詢名稱,這意味着您可以根據需要公開一個公共IQueryable GetPeople()。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM