NHibernate设置属性默认值

NHibernate设置属性默认值,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,是否可以在NHibernate中设置属性的默认值?以下是场景: 我有一个自联接表类别。类和表结构如下所示: Category int Id string Name Category ParentCategory Category int Id not null varchar Name not null int ParentCategoryId not null 如果类别没有父类别,则父类别ID必须为0 我该怎么做?TIA.如果nHibernate强制执行此关系,我不相信您能使其形成无效关系

是否可以在NHibernate中设置属性的默认值?以下是场景:

我有一个自联接表
类别
。类和表结构如下所示:

Category
int Id
string Name
Category ParentCategory

Category
int Id not null
varchar Name not null
int ParentCategoryId not null
如果类别没有父类别,则父类别ID必须为0


我该怎么做?TIA.

如果nHibernate强制执行此关系,我不相信您能使其形成无效关系。我会在数据库中创建一个虚拟父记录0,并将所有内容分配给它。

如果ParentCategoryId不受外键约束,那么您可以在代码中包含。。。比如:

class Category{
   ....

   public static Category NoParent{
     get{ return new Category{Id = 0}; }
   }


   ....
}
现在,不要设置为null,只需将其设置为NoParent。或者在ParentCategory的setter中,如果值为null,则将其设置为NoParent


这基本上是Spencer Ruport的idea:p

感谢Spencer的想法,但是我们不能这样做,因为我们只集成到一个现有的应用程序中。@sirrocco,你如何在映射中反映这一点?顺便说一下,我已经尝试过了。将id为0的类别实例分配给parentcategory属性,但无效。无效是什么意思?它是不是犯了个错误?