2013-10-28 53 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:无论如何你都不会避免多个结果集,因为执行存储过程时层次结构不会自动映射。存储过程只能为每个结果集返回平面对象。 –