Fluent nhibernate 如何在Fluent NHibernate中使用非ID字段进行引用?

Fluent nhibernate 如何在Fluent NHibernate中使用非ID字段进行引用?,fluent-nhibernate,Fluent Nhibernate,请相信我,这是一个遗留系统,因此表关系并不理想 Dog具有字段ID、所有者和名称 狗屋有身份证、主人和名字。它没有对Dog的外键引用。相反,它与所有者和名称有关 在我的狗图中,我需要能够告诉它如何参考它的狗窝。我该怎么做?当我尝试 Reference(x=>x.DogHouse). 我在圆点后面放什么?它不是ID,应该是所有者和名称。非ID字段必须是一个属性 Reference(x=> x.DogHouse, "Owner").PropertyRef(house => h

请相信我,这是一个遗留系统,因此表关系并不理想

Dog具有字段ID、所有者和名称

狗屋有身份证、主人和名字。它没有对Dog的外键引用。相反,它与所有者和名称有关

在我的狗图中,我需要能够告诉它如何参考它的狗窝。我该怎么做?当我尝试

  Reference(x=>x.DogHouse).

我在圆点后面放什么?它不是ID,应该是所有者和名称。

非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();

非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();