NHibernate:如何将引用表上的列映射到对象中的基元?

NHibernate:如何将引用表上的列映射到对象中的基元?,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,如果我有以下现有的表架构 +-------------------+ +-------------------+ | Address | | Country | +-------------------+ +-------------------+ | Line1 | +--->| CountryId | | Line2 | | |

如果我有以下现有的表架构

+-------------------+        +-------------------+
|  Address          |        |  Country          |
+-------------------+        +-------------------+
|  Line1            |   +--->|  CountryId        |
|  Line2            |   |    |  Name             |
|  City             |   |    +-------------------+
|  State            |   |
|  Zip              |   |
|  CountryId        |---+
+-------------------+
…我的课程如下

public class Address
{
    public virtual string Line1 { get; set; }
    public virtual string Line2 { get; set; }
    public virtual string City { get; set; }
    public virtual string State { get; set; }
    public virtual string PostalCode { get; set; }
    public virtual string Country { get; set; }
}

…如何配置映射,使
国家(字符串)
属性包含
[Country]
表中的
[Name]
列?

您可以通过映射视图来实现这一点。但面向对象的方法是创建一个Country对象,并映射Address和Country之间的多对一关系:

public class Address
{
    public virtual string Line1 { get; set; }
    public virtual string Line2 { get; set; }
    public virtual string City { get; set; }
    public virtual string State { get; set; }
    public virtual string PostalCode { get; set; }
    public virtual Country Country { get; set; }
}
然后,您可以通过Address.Country.name访问该名称。在FluentNHibernate中,您将使用它来映射地址映射中的关系:
References(x=>x.Country,CountryId)

谢谢,但我明白这一点。我仍然想知道如何实现上述结果。你的上述结果还是我的?实现你的目标的唯一方法就是像我说的那样绘制一个视图。我很早就阅读了这个问题,并得出了与杰米完全相同的答案。我没有发表文章,以防我在这一点上出错,但根据我与NHibernate的经验,我没有看到任何其他方法可以在不使用视图的情况下创建您正在寻找的映射。这就像域对象规范化一样!也许您可以映射一个私有的_country属性,然后创建一个公共的country属性,通过执行_country.Name返回字符串?Jon,我会用流畅的NHibernate类地图来回答这个问题,如果你们是这么想的话;你在找什么。让我知道。