Как установить значение по умолчанию, используя EntityFramework Code First FluentAPI для свойства bool?
Что-то вроде:
Property(l => l.PropertyFlag).HasColumnType("bit").DefaultValue(1);
Как установить значение по умолчанию, используя EntityFramework Code First FluentAPI для свойства bool?
Что-то вроде:
Property(l => l.PropertyFlag).HasColumnType("bit").DefaultValue(1);
Хорошие новости, код сначала поддерживает это. В методе "Up()" сгенерированной миграции укажите значение по умолчанию со следующим синтаксисом:
AddColumn("[table name]", "[column name]", c => c.Boolean(nullable: false, defaultValue: false));
Я не уверен в быстром пути, но вы можете просто установить свойство в конструкторе без параметров...
public class MyTable
{
public MyTable()
{
CanSetDefault = true;
}
public bool CanSetDefault {get; set; }
}
Обновление
Быстрый google предполагает, что это невозможно, используя беглый api...
http://social.msdn.microsoft.com/Forums/en-US/ad854e28-02f5-451b-9000-c8bcb1355d0b/codefirst-ctp5-and-default-values?forum=adonetefx
Поскольку EF не имеет требуемых мне функций, таких как значения по умолчанию и уникальный ключ как внешние ключи, мы должны изменить ORM из EF в NHibernate. Мне кажется, что NHibernate имеет больше функций, чем EF 6.X.
Другой вариант здесь - переопределить класс SqlServerMigrationSqlGenerator по умолчанию. Затем вы можете ввести определенные вещи, которые вы хотите выполнить в методе Generate (например, значения по умолчанию). Приятно то, что вы также можете использовать это в других приложениях, поскольку это довольно общий. Здесь является хорошим объяснением.
internal class CustomSqlServerMigrationSqlGenerator : SqlServerMigrationSqlGenerator
{
protected override void Generate(AddColumnOperation addColumnOperation)
{
SetCreatedUtcColumn(addColumnOperation.Column);
base.Generate(addColumnOperation);
}
protected override void Generate(CreateTableOperation createTableOperation)
{
SetCreatedUtcColumn(createTableOperation.Columns);
base.Generate(createTableOperation);
}
private static void SetCreatedUtcColumn(IEnumerable<ColumnModel> columns)
{
foreach (var columnModel in columns)
{
SetCreatedUtcColumn(columnModel);
}
}
private static void SetCreatedUtcColumn(PropertyModel column)
{
if (column.Name == "CreatedUtc")
{
column.DefaultValueSql = "GETUTCDATE()";
}
}
}