Fluent Nhibernate组合实体,指定外键

Fluent Nhibernate组合实体,指定外键,nhibernate,fluent-nhibernate,nhibernate-mapping,Nhibernate,Fluent Nhibernate,Nhibernate Mapping,我有一张流畅的Nhibernate地图,如: public class UserMap : ClassMap<PortalUser> { public UserMap() { WithTable("aspnet_Users"); Id(x => x.Id, "UserId") .GeneratedBy.Guid(); Map(x => x.Name, "UserName");

我有一张流畅的Nhibernate地图,如:

 public class UserMap : ClassMap<PortalUser>
{
    public UserMap()
    {
        WithTable("aspnet_Users");
        Id(x => x.Id, "UserId")
            .GeneratedBy.Guid();
        Map(x => x.Name, "UserName");
        Map(x => x.Login, "LoweredUserName");
        WithTable("LdapUsers", m => m.Map(x => x.FullName, "FullName"));

    }
}
公共类用户映射:类映射
{
公共用户映射()
{
WithTable(“aspnet_用户”);
Id(x=>x.Id,“UserId”)
.GeneratedBy.Guid();
映射(x=>x.Name,“用户名”);
映射(x=>x.Login,“LoweredUserName”);
WithTable(“LdapUsers”,m=>m.Map(x=>x.FullName,“FullName”);
}
}
表“LdapUser”中我的外键列是UserId,但生成的select将查找“PortalUserId”。
有没有办法直接指定关系键?

试试以下方法:

...
WithTable("LdapUsers", m => {
    m.Map(x => x.FullName, "FullName");
    m.WithKeyColumn("UserId");
});

我想你是指m.WithKeyColumn(“UserId”);WithTable正在创建一个元素,如果我理解正确的话,它应该引用联接表上的键列。罗尼说他的外键是“LdapUser”,所以查询应该看起来像。。。从aspnet_用户a内部加入a.UserId=b.LdapUser上的LdapUsers b。我的推荐人:但你可能是对的,杰米;我真的不知道。。。我从未使用过这种结构。:)实际上,我的外文列是表“LdapUser”中的“UserId”,将其替换为“LdapUser”效果很好。再次感谢。很高兴它起作用了。。。很抱歉,杰米,你说的太多了,但我显然没有注意到。我更新了我的帖子,以防以后有人偶然发现。嘿,斯图尔特,设置链接表的键没问题,但它会自动与基表的主键连接。如何使用非主键的其他列设置联接?