NHibernate和Sql Server是否可以插入实体并将其中一个列值设置为新生成的标识?
在纯sql中,我可以通过添加默认值
来实现创建表格:
create table Test
id int identity,
name varchar(12),
parentId int NOT NULL
添加约束:
alter table Test constraint ... default ident_current('Test') for parentId
然后跳过parentId或使用DEFAULT关键字:
insert into Test values('TEST')
insert into Test values('TEST', DEFAULT)
如果我错了,请纠正我,但我认为上述陈述永远不会由NHibernate生成?
现在我首先保存我的实体,然后用新创建的身份更新它。这个案例会对db结构进行制动,因为我必须使该特定列接受NULL。
起初我虽然这很容易,但现在,几个小时后我仍然找不到答案:/
提前致谢
答案 0 :(得分:2)
您可以使用property mapping中的生成属性来完成此操作。对于数据库设置的默认值,请使用generated="insert"
。对于Fluent NHibernate映射,请使用.Generated().Insert()
。
编辑:
public class Test
{
private Test _parent;
public Test()
{
_parent = this;
}
public Test Parent
{
get { return _parent == this ? null : _parent; }
set { _parent = value ?? this; }
}
}