FluentNHibernate - Установка значения по умолчанию для столбцов базы данных (SQL Server)
-
21-09-2019 - |
Вопрос
кто-нибудь знает способ, как я мог бы установить с помощью сопоставления значения столбца по умолчанию, например, длякогда я генерирую DB из сопоставлений, у меня будет столбец DateTime, имеющий getdate() в качестве значения по умолчанию?
Я пробовал до сих пор это (выглядит точно так, как мне нужно), но это не работает
this.Map(x => x.LastPersistedOn, "DateModified")
.Access.Property()
.Default("getdate()");
Решение
Я просто попытался установить некоторые значения по умолчанию, и это сработало, как ожидалось.Я использую Fluent в качестве извлечения из Git от 24.05.2010, поэтому обновление вашей копии может решить вашу проблему.
Отображение
public class SampleEntity
{
public virtual DateTime DateTimeProperty { get; set; }
}
С
public class SampleEntityMap
: ClassMap<SampleEntity>
{
public SampleEntityMap()
{
Map(x => x.DateTimeProperty, "DateTimeColumn")
.Access.Property() //actually not necessary
.Not.Nullable()
.Default("getDate()");
}
}
это приведет к созданию следующего sql (из вывода на консоль)
create table SampleEntity(
DateTimeColumn DATETIME default getDate() not null
)
--
Дом
Другие советы
Способ сделать это - назначить текущую дату и время в коде, а не использовать значение по умолчанию в базе данных.Затем относитесь к нему как к обычному столбцу.Сначала мне показалось немного странным исходить из опыта проектирования, основанного на модели, но управление значениями по умолчанию на уровне POCO - это DDD-способ сделать это.
Было бы неплохо услышать и мнение других