NHibernate: Insert entity with identity value set on a different column
NHibernate和Sql Server是否可以插入实体并将列值之一设置为新生成的标识?
在纯SQL中,我可以通过添加默认值来实现
创建表:
1 2 3 4 | create table Test id int identity, name varchar(12), parentId int NOT NULL |
添加约束:
1 | alter table Test constraint ... default ident_current('Test') for parentId |
然后跳过parentId或使用DEFAULT关键字:
1 2 | insert into Test values('TEST') insert into Test values('TEST', DEFAULT) |
如果我错了,请纠正我,但我认为NHibernate不会产生上述声明?
现在,我首先保存我的实体,然后使用新创建的身份对其进行更新。 这种情况使db结构崩溃,因为我必须使该特定列接受NULL。
起初,我虽然很容易,但是现在,几个小时后,我仍然找不到答案:/
提前致谢
您可以在属性映射中使用生成的属性来完成此操作。 对于数据库设置的默认值,请使用
编辑:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public class Test { private Test _parent; public Test() { _parent = this; } public Test Parent { get { return _parent == this ? null : _parent; } set { _parent = value ?? this; } } } |