2013-10-28 215 views
1

我有一個存儲過程返回多個結果集。每一個都是一個複雜的類型。第一個結果集將包含與第二個結果集相同的複雜類型的項目列表等,這些並不乾淨地與特定實體相關聯。例如,我的POCO類應該實體框架嵌套複雜類型

public partial class Message 
{ 
    public string Subject { get; set; } 
    ... 
    public List<Recipient> Recipients { get; set; } 
} 

public partial class Recipient 
{ 
    public string Email { get; set; } 
    ... 
} 

根據該文件,「實體和複雜類型現在可以被嵌套類」 EF 6。然而,我無法弄清楚如何創建一個複雜的列表鍵入我的第一個複雜類型。當我編輯我的FunctionImport並使用獲取列信息時,它只返回第一個複雜類型。當我嘗試創建新的複雜類型時,它仍然只返回第一個複雜類型。最後,我手動創建了我需要的所有複雜類型,並嘗試將收件人複雜類型添加到消息複雜類型中,它將只允許添加單個收件人。你需要做些什麼來嵌套複雜類型?那裏有沒有例子?我在CodePlex上找不到任何解決這個問題的東西,但我可能會錯過它。

在此先感謝您的幫助!

回答

3

通過嵌套在我看來意味着把一個類聲明爲另一種:

public class A { 
    public class B { } 
} 

在EF的早期版本,B類無法映射既不是實體或複雜類型,而在EF6它可以。這是與此功能相關的嵌套的唯一含義。

當涉及到你的問題,你仍然無法映射覆雜類型的列表。如果你想要一個列表,你需要使用實體(既作爲父母和孩子)。

+0

謝謝!我希望在多個結果集上有更好的方式來處理我的情況,而不是[本文](http://msdn.microsoft.com/en-us/data/JJ691402.aspx)中列出的情況。 – ChristyPiffat

+0

@ChristyPiffat:無論如何你都不會避免多個結果集,因爲執行存儲過程時層次結構不會自動映射。存儲過程只能爲每個結果集返回平面對象。 –