nhibernate+;流利+;映射

nhibernate+;流利+;映射,nhibernate,fluent-nhibernate,nhibernate-mapping,Nhibernate,Fluent Nhibernate,Nhibernate Mapping,我有一个表和映射: public class CategoryMap : ClassMap<Category> { public CategoryMap() { Table(FieldNames.Category.Table); Id(x => x.ID); Map(x => x.Name).Not.Nullable(); Map(x => x.ShowInMenuBar).Not.Nu

我有一个表和映射:

public class CategoryMap : ClassMap<Category>
{
    public CategoryMap()
    {
        Table(FieldNames.Category.Table);
        Id(x => x.ID);
        Map(x => x.Name).Not.Nullable();
        Map(x => x.ShowInMenuBar).Not.Nullable();
        References(x => x.Parent).Column(FieldNames.Category.ID).Nullable();
        HasMany(x => x.Articles).Cascade.All().Inverse().Table(FieldNames.Article.Table);
    }
}
排队

public virtual Category? Parent { set; get; }

public虚拟可空父级{set;get;}
因为我在编译期间出错:

CMS.Domain.Entities.Category”必须是不可为null的值类型,才能在泛型类型或方法“System.nullable”中将其用作参数“T”


我不知道如何更改才能在没有父对象的情况下保存类别对象。

我猜您正在尝试保存一篇文章,(您指定了反向),因此您需要:
第条.类别=类别

不能使引用类型为null(因为它已经是null)
Nullable
(或
T?
)只能与非Nullable值类型(例如
int
DateTime
)一起使用

错误涉及CMS.Domain.Entities.Article.Category-Article类中的Category属性。您没有为项目实体提供映射文件,但是我假设它映射Category属性,或者指定了
Not.Nullable()
,或者没有指定
Nullable()

如果域模型允许项目实体包含空类别,请使用
Nullable()
,否则在创建/保存项目时需要设置类别:

Article.Category = aCategory;

不能为该类别设置Null的原因是,Nullable仅适用于值类型,而Category根据定义是引用类型,因此已经可以在定义为Category的属性上支持Null。能否提供异常的完整堆栈跟踪

public virtual Category? Parent { set; get; }
public virtual Nullable<Category> Parent { set; get; }
Article.Category = aCategory;