Составное поле для составления карт Fluent 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= нейтральный, PublicKeyToken=null, для столбцов: NHibernate.Mapping.Column(FunctionID)"}

Есть ли способ избежать этого? в конечном счете мне нужно создать класс с CompositeID, созданный двумя настраиваемыми сопоставленными классами. Если я использую ComjectID с полями INT, это работает как шарм

Заранее спасибо

Отображение функции (как профиля)

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

1 ответ

Решение

Используйте KeyReference вместо KeyProperty

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

    }
}
Другие вопросы по тегам