【问题标题】:Fluent Nhibernate composed entity, specify foreign keyFluent Nhibernate 组合实体,指定外键
【发布时间】:2009-04-28 09:12:40
【问题描述】:

我有一个 Fluent 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"));

    }
}

表“LdapUser”中的外键列是 UserId,但生成的选择将查找“PortalUserId”。
有没有办法直接指定关系键?

【问题讨论】:

    标签: nhibernate fluent-nhibernate nhibernate-mapping


    【解决方案1】:

    试试这个:

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

    【讨论】:

    • 我想你的意思是 m.WithKeyColumn("UserId");
    • WithTable 正在创建一个 元素,如果我理解正确, 应该引用连接表上的键列。 Ronnie 说他的外键是“LdapUser”,所以查询应该类似于... FROM aspnet_Users a INNER JOIN LdapUsers b ON a.UserId = b.LdapUser。我的参考:ayende.com/Blog/archive/2007/04/24/… 但你可能是对的,杰米;老实说,我不知道......我从来没有使用过这个构造。 :)
    • 实际上,我的外部列是表“LdapUser”中的“UserId”,并且将它而不是“LdapUser”放置得很好。再次感谢。
    • 很高兴它奏效了......对不起,杰米,你已经死了,但我显然没有给予足够的关注。我更新了我的帖子,以防以后有人偶然发现。
    • Hey Stuart,这可以用于设置链接表的键,但它会自动与基表的主键连接。如何设置与不是 pk 的不同列的连接?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多