2010-10-27 5 views
12

Я изучал Code First с Entity Framework CTP4, и вы можете использовать ModelBuilder для создания столбцов таблицы. Есть ли способ установить значение по умолчанию для столбца в базе данных с помощью ModelBuilder или какого-либо другого механизма?Код структуры Entity Framework Первые значения столбца по умолчанию CTP4?

Спасибо!

+0

[Соответствующее предложение] (https://data.uservoice.com/forums/72025-entity-framework-feature -suggestions/предложения/2929682-поддержка-база-по-умолчанию, значения-в-кода первого). – tne

ответ

2

Не удалось найти способ, чтобы добавить значение по умолчанию, кроме Мануалы редактирования с помощью текстового редактора/приложения Это ошибка в Entity Framework ...

+0

Есть ли способ установить значение по умолчанию, но оно не работает, ошибка? Или это просто отсутствует в текущей версии? – Lukasz

+3

Тот факт, что эта функция отсутствует, является ошибкой ... – Tor

+0

Отсутствующая функция не должна квалифицироваться как ошибка. –

36

Я использую конструктор для установки значения по умолчанию. Никогда не подводил меня

public class Activity 
{ 
    [Required] 
    public DateTime AddedDate { get; set; } 

    public Activity() 
    { 
     AddedDate = DateTime.Now; 
    } 
} 
+0

Этот ответ не получает достаточной любви. – Kjensen

+1

Только проблема значений по умолчанию DB более эффективна. –

+0

, но пока он не будет выпущен в следующем выпуске EF, это сделает трюк – Korayem

2

Это мой путь, устанавливая важные свойства с private setters в методе создания вместо через конструктор

Модель

public class User 
{ 
    public static User Create(Action<User> init) 
    { 
     var user = new User(); 
     user.Guid = Guid.NewGuid(); 
     user.Since = DateTime.Now; 
     init(user); 
     return user; 
    } 

    public int UserID { get; set; } 

    public virtual ICollection<Role> Roles { get; set; } 
    public virtual ICollection<Widget> Widgets { get; set; } 

    [StringLength(50), Required] 
    public string Name { get; set; } 
    [EmailAddress, Required] 
    public string Email { get; set; } 
    [StringLength(255), Required] 
    public string Password { get; set; } 
    [StringLength(16), Required] 
    public string Salt { get; set; } 

    public DateTime Since { get; private set; } 
    public Guid Guid { get; private set; } 
} 

Создание нового пользователя

context.Users.Add(User.Create(c=> 
{ 
    c.Name = "User"; 
    c.Email = "[email protected]"; 
    c.Salt = salt; 
    c.Password = "mypass"; 
    c.Roles = new List<Role> { adminRole, userRole }; 
})); 
4

В сгенерированном коде для миграции, вы можете указать значение по умолчанию для столбца:

AddColumn("users", "ReceiveSummaryEmail", c => c.Boolean(nullable: false, defaultValue: true)); 
Смежные вопросы