2014-02-19 2 views
0

Я только что изменил свой datamodel, я хочу иметь некоторые элементы по умолчанию в таблице данных, когда база данных генерируется EF в первый раз. Раньше я делал это из метода семени. Но теперь я обнаружил, что это будет более полезно, и количество кодов, которые я должен написать, будет меньше. Если я использую enum (со значениями по умолчанию).Код First EF: Идентификатор Enum не добавляется в базу данных во время генерации базы данных

Это моя текущая модель после добавления enum

public partial class License 
{  
    public int LicenseId { get; set; } 
    public LicenseTypes Licensetype { get; set; } 
} 

public enum LicenseTypes 
{ 
    Trial = 0, 
    Paid = 1 
} 

и это мой DbContext класс

public partial class InfoBridgeSmartDatePickerDbContext : IdentityDbContext 
{ 
    public InfoBridgeSmartDatePickerDbContext():base("DefaultConnection") 
    { 
    } 

    public DbSet<License> Licenses { get; set; } 

} 

при запуске приложения, создается база данных, но таблица Licenses не содержит values или Id от enum. Не должен ли он содержать values или Id перечисления?

EF версия я использую: 6.0.2

+0

Там действительно должен быть 'Int не Тип лицензии null' столбец в таблице 'License'; Я не вижу проблемы с кодом, который вы опубликовали. – Moho

+0

Но будет ли таблица также генерировать две строки с Id как 0,1 и LicenseType как Trial и Paid, или мне нужно добавить ее в таблицу во время семенного метода? – Cybercop

+0

В настоящее время я не знаю, чего ожидать в таблице, просто таблица с пустыми колонами (LicenseId и LicenseType) или столбцы с некоторыми значениями – Cybercop

ответ

0

Нет, не будет никаких значений перечислений в базе данных. EF управляет только преобразованием от примитива к перечислению, нет ограничений на уровне базы данных.

+0

. Я новичок в этом перечислении и в коде, поэтому давайте скажем: «Если мне нужно назначить LicenseId для пользователя, то как бы я это сделал, поскольку моя таблица данных в базе данных не имеет представления о том, какие лицензии существуют – Cybercop

+0

Но для меня она даже не содержит идентификатор, он полностью пуст, я думаю, что он должен по крайней мере иметь Значение идентификатора – Cybercop

+0

@ Biplov13 Вы должны заполнить таблицу необходимыми данными, EF не может этого сделать для вас. –

-1

Попробуйте использовать

public partial class License 
{  
    public int LicenseId { get; set; } 
    [NotMapped] 
    public LicenseTypes Licensetype { get; set;{ _default = value; } } 
} 

я использовал для одного значения, для объекта проверять один раз hope..it сделать трюк

Смежные вопросы