我有这个映射: Map(x => x.FileAs).Length(200).Default(“”)。Not.Nullable();
数据库架构已存在且列不允许空值且没有默认值。无法更改实时数据库。
如果当前值为null,NHibernate是否可以配置为在插入期间将值设置为指定的默认值?
Fluent NHibernate的文档非常简短......到目前为止,我的搜索没有表明这是否可行。
谢谢, 亚伦
答案 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");
}
}