代码之家  ›  专栏  ›  技术社区  ›  Nikola Malovic

FluentHibernate-设置数据库列的默认值(SQL Server)

  •  6
  • Nikola Malovic  · 技术社区  · 15 年前

    有人知道如何通过映射列的默认值来设置吗?例如,当我从映射生成db时,我会让datetime列的getDate()作为默认值?

    到目前为止我试过这个(看起来很像我需要的),但它不起作用。

    this.Map(x => x.LastPersistedOn, "DateModified") 
        .Access.Property() 
        .Default("getdate()"); 
    
    2 回复  |  直到 15 年前
        1
  •  6
  •   Dom Ribaut    15 年前

    我刚刚尝试设置一些默认值,它按预期工作。我使用Fluent作为2010年5月24日从Git检索的工具,因此更新您的副本可以解决您的问题。
    映射

    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
      )
    

    ——
    DOM

        2
  •  4
  •   willemaster    15 年前

    这样做的方法是在代码中分配当前的日期时间,而不是在数据库中使用默认值。然后将其视为普通列。起初从模型驱动的设计背景来看,我觉得有点奇怪,但是在POCO级别管理默认值是DDD方法。

    听别人的意见也不错