Можно ли хранить поля структуры в той же таблице, что и содержащий класс? - PullRequest
9 голосов
/ 17 августа 2011

В настоящее время я использую Entity Framework 4 с CTP-версией в июне 2011 года (для поддержки enum), и у меня возникают трудности с встраиванием структуры в постоянный класс. У меня есть Patient класс с InclusionCriteria структурным полем (среди прочих):

public class Patient
{
    public InclusionCriteria inclusionCriteria
    {
        get;
        set;
    }

    ...
}

Структура довольно проста, с примитивными полями:

public struct InclusionCriteria
{
    public bool withStemi
    {
        get;
        set;
    }

    ...
}

После запуска системы стало очевидно, что данные структуры не сохраняются. Когда я просматриваю сгенерированную таблицу, структура отсутствует (как внешний ключ или как-то иначе). Я хотел бы, чтобы поля структуры были расположены в таблице Patient, поэтому я не сделал DbSet для критериев. Я мог бы потенциально сделать это, но я бы предпочел держать все это в одной таблице. Возможно ли это в рамках сущности?

1 Ответ

7 голосов
/ 17 августа 2011

Структуры не поддерживаются.Вы должны использовать класс и отобразить его как сложный тип.Если вы используете подход «сначала код», вы можете попытаться сделать его классом и просто воссоздать базу данных - если вам повезет, он будет автоматически отображен как сложный тип.В противном случае вы можете использовать аннотацию данных:

[ComplexType]
public class InclusionCriteria { ... } 

или свободный API:

modelBuilder.ComplexType<InclusionCriteria>(); 

Если вы используете EDMX, следуйте этой статье для создания сложного типа и эта статья чтобы использовать его.

Кстати.CTP 2011 предназначен только для тестирования новых функций, а не для реальной разработки.Его содержание может измениться в следующем CTP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...