Составное поле для составления карт 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");
}
}