FluentNHibernate - 设置DB列的默认值(SQL Server)

时间:2009-10-15 11:28:34

标签: sql-server fluent-nhibernate column-defaults

有没有人知道如何通过映射列的默认值来设置,例如当我从映射生成DB时,我会将DateTime列的getdate()作为默认值吗?

我到目前为止尝试了这个(看起来完全像我需要的那样)但它不起作用

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

2 个答案:

答案 0 :(得分:6)

我刚尝试设置一些默认值,它按预期工作。我在24.05.2010使用Fluent作为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

答案 1 :(得分:4)

执行此操作的方法是在代码中分配当前DateTime,而不是在数据库中使用默认值。然后将其视为普通列。我最初从模型驱动的设计背景看起来有点奇怪,但在POCO级别管理默认值是DDD的方法。

也很高兴听到别人的意见