Fluentnhibernate - Configuração do valor padrão para colunas DB (SQL Server)
-
21-09-2019 - |
Pergunta
Alguém sabe como eu poderia definir o mapeamento do valor padrão de uma coluna, por exemplo, quando eu gerar DB a partir de mapeamentos, eu teria coluna DateTime tendo getDate () como valor padrão?
Eu tentei até agora isso (parece exatamente o que eu preciso), mas não funciona
this.Map(x => x.LastPersistedOn, "DateModified")
.Access.Property()
.Default("getdate()");
Solução
Eu apenas tentei definir alguns valores padrão e funcionou como esperado. Estou usando o Fluent conforme recuperar o Git, o 24.05.2010, portanto, a atualização da sua cópia pode resolver seu problema.
Mapeamento
public class SampleEntity
{
public virtual DateTime DateTimeProperty { get; set; }
}
Com
public class SampleEntityMap
: ClassMap<SampleEntity>
{
public SampleEntityMap()
{
Map(x => x.DateTimeProperty, "DateTimeColumn")
.Access.Property() //actually not necessary
.Not.Nullable()
.Default("getDate()");
}
}
Isso produzirá o seguinte SQL (da saída para o console)
create table SampleEntity(
DateTimeColumn DATETIME default getDate() not null
)
--
Dom
Outras dicas
A maneira de fazer isso é atribuir o datetime atual no código, em vez de usar o valor padrão no banco de dados. Em seguida, trate -o como uma coluna normal. Pareceu um pouco estranho para mim a princípio, proveniente de um fundo de design orientado a modelos, mas o gerenciamento de valores padrão no nível POCO é a maneira DDD de fazê-lo.
Seria bom ouvir as opiniões dos outros também