Fluent NHibernate映射词典<;枚举,类>;-密钥另存为空

Fluent NHibernate映射词典<;枚举,类>;-密钥另存为空,nhibernate,fluent-nhibernate,nhibernate-mapping,fluent-nhibernate-mapping,Nhibernate,Fluent Nhibernate,Nhibernate Mapping,Fluent Nhibernate Mapping,我有以下类和映射: public enum VariationType { Base = 1, RiderMain = 2, RiderSpouse = 3, RiderChild = 4, Family = 5, FamilyBase = 6 } public class PlanParameter { private IDictionary<VariationType, PlanParameterDefaultValue>

我有以下类和映射:

public enum VariationType
{
    Base = 1,
    RiderMain = 2,
    RiderSpouse = 3,
    RiderChild = 4,
    Family = 5,
    FamilyBase = 6
}

public class PlanParameter
{
    private IDictionary<VariationType, PlanParameterDefaultValue> _defaultValues;

    public PlanParameter()
    {
        ParameterContext = new Parameter();
    }

    public virtual Parameter ParameterContext { get; set; }

    public virtual object DefaultValue { get; set; }

    public virtual string DefaultValueString
    {
        get
        {
            return DefaultValue == null ? null : DefaultValue.ToString();
        }
        set
        {
            DefaultValue = value == null ? null : Convert.ChangeType(value, ParameterContext.Type);
        }
    }

    public virtual IDictionary<VariationType, PlanParameterDefaultValue> DefaultValues
    {
        get
        {
            if (_defaultValues == null)
                _defaultValues = new Dictionary<VariationType,  PlanParameterDefaultValue>();

            return _defaultValues;
        }
    }
}

class PlanParameterMap : ClassMap<PlanParameter>
{
    public PlanParameterMap()
    {
        Id().GeneratedBy.Identity().Column("ID");

        References(x => x.ParameterContext,"ParameterID");

        Map(x => x.DefaultValueString);

        HasMany(x=> x.DefaultValues)
            .Access.CamelCaseField(Prefix.Underscore)
            .KeyColumn("PlanParameterID").Inverse()
            .AsMap("Variation")
            .Cascade.AllDeleteOrphan();
    }
}


public class PlanParameterDefaultValue
{
    public virtual PlanParameter PlanParameter { get; set; }

    public virtual object DefaultValue { get; set; }

    public virtual string DefaultValueString
    {
        get
        {
            return DefaultValue == null ? null : DefaultValue.ToString();
        }
        set
        {
            DefaultValue = value == null ? null : Convert.ChangeType(value, PlanParameter.ParameterContext.Type);
        }
    }
}


class PlanParameterDefaultValueMap : ClassMap<PlanParameterDefaultValue>
{
    public PlanParameterDefaultValueMap()
    {
        Id().GeneratedBy.Identity().Column("ID");

        Map(x => x.DefaultValueString);

        References(x => x.PlanParameter).Column("PlanParameterID");
    }
}
公共枚举变量类型
{
基数=1,
RiderMain=2,
Riderpouse=3,
RiderChild=4,
家庭=5,
家庭基础=6
}
公共类参数
{
私有IDictionary DefaultValue;
公共参数()
{
ParameterContext=新参数();
}
公共虚拟参数ParameterContext{get;set;}
公共虚拟对象默认值{get;set;}
公共虚拟字符串DefaultValueString
{
收到
{
返回DefaultValue==null?null:DefaultValue.ToString();
}
设置
{
DefaultValue=value==null?null:Convert.ChangeType(值,ParameterContext.Type);
}
}
公共虚拟IDictionary默认值
{
收到
{
如果(_defaultValues==null)
_defaultValues=新字典();
返回默认值;
}
}
}
类PlanParameterMap:ClassMap
{
公共计划参数映射()
{
Id().GeneratedBy.Identity().Column(“Id”);
引用(x=>x.ParameterContext,“ParameterID”);
映射(x=>x.DefaultValueString);
HasMany(x=>x.defaultvalue)
.Access.CamelCaseField(前缀.下划线)
.KeyColumn(“PlanParameterID”).Inverse()
.AsMap(“变更”)
.Cascade.AllDeleteOrphan();
}
}
公共类PlanParameterDefaultValue
{
公共虚拟平面参数平面参数{get;set;}
公共虚拟对象默认值{get;set;}
公共虚拟字符串DefaultValueString
{
收到
{
返回DefaultValue==null?null:DefaultValue.ToString();
}
设置
{
DefaultValue=value==null?null:Convert.ChangeType(值,PlanParameter.ParameterContext.Type);
}
}
}
class PlanParameterDefaultValueMap:ClassMap
{
公共计划参数DefaultValueMap()
{
Id().GeneratedBy.Identity().Column(“Id”);
映射(x=>x.DefaultValueString);
参考(x=>x.PlanParameter).Column(“PlanParameterID”);
}
}
我的问题非常具体到

IDictionary<VariationType, PlanParameterDefaultValue> DefaultValues
IDictionary默认值
由于某种原因,枚举将不会保存,保存在其列中的所有内容都为null 到目前为止,我唯一的解决方案是向实体添加VariationType属性,并使用lambda公式将其映射,但我确实不需要实体中的VariationType

我做错什么了吗


非常感谢

Inverse()告诉NHibernate“mapped to”-实体将负责保存密钥,并且集合所有者不应保留密钥。尝试删除该标志。

但我需要孩子知道父项-知道PlanParameter,就我所知,如果没有逆项,这是无法做到的,孩子不知道键,也不应该知道,因为现在我将键插入到孩子的属性中,但这只是为了NH的缘故。。。