如何在使用Fluent NHibernate的插入过程中应用属性映射默认值

时间:2011-10-19 06:51:38

标签: nhibernate fluent-nhibernate nhibernate-mapping

我有这个映射:  Map(x => x.FileAs).Length(200).Default(“”)。Not.Nullable();

数据库架构已存在且列不允许空值且没有默认值。无法更改实时数据库。

如果当前值为null,NHibernate是否可以配置为在插入期间将值设置为指定的默认值?

Fluent NHibernate的文档非常简短......到目前为止,我的搜索没有表明这是否可行。

谢谢, 亚伦

2 个答案:

答案 0 :(得分:2)

你不能让NHibernate设置默认值。映射中的Default("")仅影响可由NHibernate生成的数据库模式。

如果您需要为实体中的属性强制执行某些默认值,为什么不在构造函数中执行此操作?

答案 1 :(得分:1)

是的,我相信你可以。您应该在映射中查看以下内容:

  

(7)dynamic-update(可选,默认为false):指定   UPDATE SQL应该在运行时生成,并且只包含那些   值已更改的列。

     

(8)dynamic-insert(可选,默认为false):指定   INSERT SQL应该在运行时生成,并且只包含列   其值不为空。

上面是从这里取的:http://www.nhforge.org/doc/nh/en/index.html#mapping-declaration-class

流利的例子:

public class OrderMap : ClassMap<Order>
{
    public OrderMap()
    {
        DynamicInsert();
        DynamicUpdate();
        Table("ORDER");
        Id(x => x.OrderId, "ORDER_ID");
    }
}