在Fluent NHibernate中映射嵌套组件

时间:2009-10-01 14:44:57

标签: nhibernate orm fluent-nhibernate nhibernate-mapping

我有一个'用户'实体,其中包含'地址'值对象。我使用FNH的Component概念确定了这个映射。但是,Address VO还包含一个Country,它是另一个值对象。我曾假设这应该只是作为另一个组件嵌套,但这似乎不起作用。谁能告诉我应该如何解决这个问题?

映射代码如下......

谢谢!

public UserMapping()
        {
            Table("Users");
            Id(c => c.Id).GeneratedBy.HiLo("100");
            Map(c => c.UserName).Not.Nullable().Length(64);
            Map(c => c.Email).Not.Nullable().Length(128);
            Map(c => c.Password).Not.Nullable().Length(256);
            Map(c => c.Roles).Length(64);
            Map(c => c.FirstName).Not.Nullable().Length(64);
            Map(c => c.LastName).Not.Nullable().Length(64);
            Map(c => c.BirthDate).Not.Nullable();
            //Address
            Component(x => x.Address, m =>
            {
                m.Map(x => x.AddressLine1).Not.Nullable();
                m.Map(x => x.AddressLine2);
                m.Map(x => x.City).Not.Nullable();
                m.Map(x => x.Region);
                m.Map(x => x.PostalCode).Not.Nullable();
                //*****Country Here********
                // country has Name and Code

            });
        }

2 个答案:

答案 0 :(得分:13)

啊,来自FNH邮件列表的Jimmy Bogard向我展示了 - 这很简单。我以前不知道自己在做什么!无论如何,对于其他感兴趣的人:

Component(c => c.Address, m =>
{
    m.Component(cp => cp.Country, m2 =>
    {
        m2.Map(x => x.Name); //etc
    } 

答案 1 :(得分:0)

我会为Country创建一个地图并使用m.References(x => x.Country)