流利的Nhibernate 3映射复合字段自定义类型

问题描述

|| 大家好,我的情况
public class Permission
{
    public virtual Function Function { get; set; }
    public virtual Profile Profile { get; set; }
}

public class MapPermission : ClassMap<Permission>
{
    public MapPermission()
    {
        Table(\"Permissions\".ToUpper());
        CompositeId().KeyProperty(x => x.Function,\"FunctionID\").KeyProperty(x => x.Profile,\"ProfileID\");

    }
}
其中功能和配置文件是两个易于映射的实体。运行时出现此错误: 无法确定以下类型:Data.Model.Entities.Function,Data.Model,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null,用于列:NHibernate.Mapping.Column(FunctionID)\“} 有办法避免这种情况吗?最终,我需要创建一个由两个自定义映射类组成的CompositeID的类。如果我使用带有int字段的CompositeID,它就像一个魅力 提前致谢 功能(如配置文件)映射
public class Function
{
    public virtual int ID { get; set; }
    public virtual string Name { get; set; }
}

public class MapFunction : ClassMap<Function>
{
    public MapFunction()
    {
        Table(\"FUNCTIONS\");
        Id(x => x.ID);
        Map(x => x.Name);
    }
}
    

解决方法

        使用KeyReference代替KeyProperty
public class MapPermission : ClassMap<Permission>
{
    public MapPermission()
    {
        Table(\"Permissions\".ToUpper());
        CompositeId()
            .KeyReference(x => x.Function,\"FunctionID\")
            .KeyReference(x => x.Profile,\"ProfileID\");

    }
}
    

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...