实体框架嵌套复杂类型

时间:2013-10-28 20:07:40

标签: entity-framework ef-database-first entity-framework-6

我有一个返回多个结果集的存储过程。每一个都是复杂的类型。第一个结果集将包含与第二个结果集相同的复杂类型的项目列表,等等。这些项目与特定实体不完全相关。例如,我的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,“实体和复杂类型现在可以嵌套在类中”。但是,我无法弄清楚如何在我的第一个复杂类型中创建复杂类型的LIST。当我编辑我的FunctionImport并使用获取列信息时,它只返回第一个复杂类型。当我尝试创建新的复杂类型时,它仍然只返回第一个复杂类型。最后,我已经手动创建了所有需要的复杂类型,并尝试将Recipient复杂类型添加到Message复杂类型,它只允许添加一个Recipient。嵌套复杂类型需要做些什么特别的事情吗?那里有什么例子吗?我在CodePlex上找不到任何可以解决这个问题的内容,但我可能会错过它。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

通过嵌套在我看来意味着将一个类声明放入另一个类:

public class A {
    public class B { }
}

在以前的EF版本中,无法将B类映射为实体或复杂类型,而在EF6中它也可以。这是与此功能相关的嵌套的唯一含义。

当涉及到您的问题时,您仍然无法映射复杂类型的列表。如果你想要一个列表,你需要使用实体(父和子)。