Перечисления в сгенерированных объектах EF4 POCO - PullRequest
7 голосов
/ 01 марта 2011

Поскольку в EF4 отсутствует поддержка перечисления, я пытался реализовать обходной путь, указанный в:

http://blogs.msdn.com/b/alexj/archive/2009/06/05/tip-23-how-to-fake-enums-in-ef-4.aspx?PageIndex=1&CommentPosted=true#comments

Однако я использую генератор POCO для EF4 (которыйстатья НЕ использует), и я продолжаю получать следующую ошибку времени выполнения:

Не удалось найти информацию сопоставления и метаданных для EntityType ...

Предположительно, это потому, что CreateObjectSet не понимает класс-оболочку.

Кто-нибудь смог найти подходящее решение для поддержки перечислений в EF4 с генерируемыми POCO?

Спасибо.

1 Ответ

7 голосов
/ 03 марта 2011

Да, свойства типа enum не поддерживаются EF4 (или CTP5);конечно, они нам нужны, и я слышал, что они будут реализованы в следующем выпуске.

Вот обходной путь:

public enum FieldDataType
{ 
    Image,
    RawText,
    Ajax
}

public class DefinitionDynamicField
{
    public int FieldType { get; set; }

    [NotMapped]
    public FieldDataType FieldTypeObserver 
    { 
        get { return (FieldDataType)FieldType; }
        set { return FieldType = (int)value; }
    }
}

Мы используем FieldTypeObserver вместо FieldType.

Ужасно, но работает.

...