Nhibernate按代码进行映射,无法确定属性的类型

本文关键字:无法确定 属性 类型 映射 代码 Nhibernate | 更新日期: 2023-09-27 17:59:16

我有实体对象User和值对象Profile

public class User : Entity<Guid>
{
    ...
    public virtual Profile Profile { get; set; }
}
public class Profile
{
    ...
    public virtual User User { get; set; }
}

我通过代码使用nhibernate映射,并将UserMap.cs中的Profile值对象映射为类似Component(c => c.Profile, ProfileMap.Mapping()); 的组件

ProfileMap.cs

public class ProfileMap
{
    public static Action<IComponentMapper<Profile>> Mapping()
    {
        return c =>
        {
           ...
           c.Property(p => p.User);               
        }
    }
}

在单元映射测试中,我收到了内部异常消息的错误

"无法确定的类型:MyApp.Domain.Model.User,MyApp.Domain,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null,对于列:NHibernate.MMapping.Column(User)"}

p.s.当我注释掉从ProfileMap映射User属性并将Profile属性留在UserMap映射工作中时。

Nhibernate按代码进行映射,无法确定属性的类型

用户很可能不是属性,而是关系类型(多对多、多对一或其他)。很可能是组件的父级。

public static Action<IComponentMapper<Profile>> Mapping()
{
    return c =>
    {
       ...
       c.Parent(p => p.User);               
    }
}