如何使用Fluent NHibernate中的非ID字段引用?

时间:2013-03-12 03:25:03

标签: fluent-nhibernate

请耐心等待,这是一个遗留系统,所以表关系不是主意。

狗有字段ID,所有者和姓名

DogHouse有ID,所有者和姓名。它没有Dog的外键引用。相反,它与所有者和名称相关。

在我的DogMap中,我需要能够告诉它如何引用它的Doghouse。我怎么做?当我尝试

  Reference(x=>x.DogHouse).

点后点什么?它不是ID,应该是所有者和姓名。

1 个答案:

答案 0 :(得分:3)

非id字段必须是一个属性

Reference(x=> x.DogHouse, "Owner").PropertyRef(house => house.Owner).Readonly();

因为两者都需要我们必须使用一些技巧

DogHouse FakeReferenceProp { get; set; }
public DogHouseMap()
{
    Component(x => FakeReferenceProp, c =>
    {
        c.Map(x => x.Owner, "Owner").Readonly();
        c.Map(x => x.Name, "Name").Readonly();
    });
}

// in DogMap
Reference(x=> x.DogHouse).Columns.Add("Owner", "Name").PropertyRef(house => FakeReferenceProp).Readonly();