FluentNHibernate - Setting default value for DB columns (SQL Server)

蹲街弑〆低调 提交于 2019-12-21 04:46:17

问题


does anyone know a way how I could set through mapping the default value of a column so for e.g. when I generate DB from mappings I would have DateTime column having getdate() as default value?

I tried so far this (looks exactlly like what I need) but it doesn't work

this.Map(x => x.LastPersistedOn, "DateModified") 
    .Access.Property() 
    .Default("getdate()"); 

回答1:


I just tried setting some default values and it worked as expected. I am using Fluent as retrieve from Git the 24.05.2010 so updating your copy may solve your problem.
Mapping

public class SampleEntity
{
    public virtual DateTime DateTimeProperty { get; set; }
}

With

 public class SampleEntityMap
        : ClassMap<SampleEntity>
{
   public SampleEntityMap()
   {
    Map(x => x.DateTimeProperty, "DateTimeColumn")
             .Access.Property()  //actually not necessary 
             .Not.Nullable()
             .Default("getDate()");
   }
}

this will produce the following sql (from output to the console)

create table SampleEntity(
   DateTimeColumn DATETIME default  getDate()  not null
  )

--
Dom




回答2:


The way to do this is to assign the current DateTime in code rather than using default value in the database. Then treat it as a normal column. Seemed a bit strange to me at first coming from a model-driven design background, but managing default values at the POCO level is the DDD way to do it.

Would be good to hear others' opinions too



来源:https://stackoverflow.com/questions/1571779/fluentnhibernate-setting-default-value-for-db-columns-sql-server

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!