Платформа сущностей с вложенными сложными типами

У меня есть хранимая процедура, которая возвращает несколько наборов результатов. Каждый из них является сложным типом. Первый результирующий набор будет содержать список элементов того же сложного типа, что и второй результирующий набор, и т. д. Они не имеют четкой корреляции с конкретными объектами. Например, мои классы 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 и использую Get Column Information, он возвращает только первый сложный тип. Когда я пытаюсь создать новый сложный тип, он по-прежнему возвращает только первый сложный тип. Наконец, я создал все сложные типы, которые мне нужны, вручную и попытался добавить сложный тип Recipient к сложному типу Message, это позволит добавить только одного Recipient. Есть ли что-то особенное, что вам нужно сделать, чтобы вложить сложные типы? Есть ли примеры? Я не смог найти ничего, что касалось бы этого в CodePlex, но, возможно, я просто пропустил это.

Заранее спасибо за вашу помощь!


person ChristyPiffat    schedule 28.10.2013    source источник


Ответы (1)


Под вложением, на мой взгляд, подразумевается помещение одного объявления класса в другое:

public class A {
    public class B { }
}

В предыдущих версиях EF класс B не мог быть сопоставлен ни как сущность, ни как сложный тип, в то время как в EF6 это возможно. Это единственное значение вложенности, связанное с этим признаком.

Когда дело доходит до вашего вопроса, вы все еще не можете сопоставить список сложных типов. Если вам нужен список, вам нужно использовать сущности (как родительские, так и дочерние).

person Ladislav Mrnka    schedule 29.10.2013
comment
Спасибо! Я надеялся, что есть лучший способ справиться с моей ситуацией, чем указано в этой статье для нескольких наборов результатов. - person ChristyPiffat; 29.10.2013
comment
@ChristyPiffat: В любом случае вам не избежать нескольких наборов результатов, потому что иерархии не сопоставляются автоматически при выполнении хранимых процедур. Хранимые процедуры могут возвращать только плоские объекты для каждого результирующего набора. - person Ladislav Mrnka; 29.10.2013