【问题标题】:Fluent Nhibernate 3 Mapping Composite Field (Custom Type)Fluent Nhibernate 3 映射复合字段(自定义类型)
【发布时间】:2011-09-05 08:27:28
【问题描述】:

大家好,我的场景

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");

    }
}

其中 Function AND Profile 是两个容易映射的实体。当我运行时出现此错误:

无法确定类型: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);
    }
}

【问题讨论】:

    标签: fluent-nhibernate composite-id custom-type


    【解决方案1】:

    使用 KeyReference 而不是 KeyProperty

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

    【讨论】:

    • 如果这解决了您的问题,请单击复选标记将其标记为答案。
    • 我的回答位于向下箭头下方。
    猜你喜欢
    • 1970-01-01
    • 2013-04-04
    • 2013-12-01
    • 2014-08-25
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    • 2014-12-09
    相关资源
    最近更新 更多