Первый столбец кода MVC Asp.Net не создан - PullRequest
0 голосов
/ 14 марта 2012

Сначала я использую код EF4.3.1 и MVC4. Моя база данных создается за исключением одного столбца, и ошибка не отображается. Почему этот столбец не будет создан? Должен ли я использовать атрибут EnumDataType (похоже, он ничего не делает)?

public class Setting
{
    public Guid SettingId { get; set; }
    public string Key { get; set; }
    public string Value { get; set; }

    [Column("DataType", TypeName = "varchar")]
    public SettingDataType DataType { get; set; }
    }


    public enum SettingDataType
    {
        [Description("String")]
        text,
        [Description("Integer")]
        integer,
        [Description("Boolean")]
        boolean
    }

Ответы [ 2 ]

2 голосов
/ 14 марта 2012

Перечисления не поддерживаются в EF до версии 5.0.Итак, вы, вероятно, просто достигаете этого предела.

2 голосов
/ 14 марта 2012

Перечисления все еще не поддерживаются в EF 4.3.Не имеет значения, указали ли вы другой DataType в атрибуте.

EF просто полностью игнорирует перечисления при анализе класса и создании таблиц.

Enum обещана поддержкаEF 5.0 хотя ... наконец-то!

На данный момент вместо этого используйте свойство int и добавьте еще одно свойство, которое преобразует int в значение enum на лету.Также, чтобы быть уверенным, что в следующей версии EF ничего не сломается, добавьте ключевое слово Ignore.

public class Setting
{
    public Guid SettingId { get; set; }
    public string Key { get; set; }
    public string Value { get; set; }

    [Column("DataType", TypeName = "varchar")]
    public int DataTypeInt { get; set; }

    [Ignore]
    public SettingDataType DataType
    { 
        get { return (SettingDataType)this.DataTypeInt; }
        set { return this.DataTypeInt = (int)value; }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...