流畅的nhibernate映射嵌套属性"找不到getter"

Phi*_*idt 2 nhibernate orm fluent-nhibernate fluent-nhibernate-mapping

好吧,这可能是一个双重问题.我有一个类User,其中包含Location类型的属性UserLocation.起初,我被映射User,并UserLocation类和存储他们无论是在分贝,但并没有做出很大的意义对我来说,因为对于唯一的目的UserLocation是要成为其中的一部分User.无论如何,现在,我的映射看起来像这样:

public class UserMap : ClassMap<User>
    {
        public UserMap()
        {
            Id(x => x.Id).Access.ReadOnlyPropertyThroughLowerCaseField().GeneratedBy.Identity();
            Map(x => x.Location.Address);
            Map(x => x.Location.City);
            Map(x => x.Location.State);
            Map(x => x.Location.ZipCode);
        }
    }
Run Code Online (Sandbox Code Playgroud)

但我收到错误"无法找到getter UserLocation.Address".我也得到了一堆转换错误,因为似乎NHibernate仍在生成一个计算类UserLocation.所以我想问题是从映射的自定义类中引用非映射自定义类的最佳方法什么.

哦,只是补充一点,我很确定UserLocation没有被映射到任何地方.我甚至尝试从User映射中引用它,并且我仍然会尝试将计算类转换为真实类的转换错误.我不可能理解为什么在这一点上甚至会有一个计算类型..

Mir*_*vic 9

你有什么组件.组件在NHibernate中单独映射.

您的Fluent NHibernate映射应如下所示:

public class UserMap : ClassMap<User>
{
    public UserMap()
    {
        Id(x => x.Id).Access.ReadOnlyPropertyThroughLowerCaseField()
            .GeneratedBy.Identity();

        Component(x => x.Location,
            loc =>
            {
                loc.Map(x => x.Address);
                loc.Map(x => x.City);
                loc.Map(x => x.State);
                loc.Map(x => x.ZipCode); 
            });
    }
}
Run Code Online (Sandbox Code Playgroud)