Fluent NHibernate从另一个表加入单列

Mat*_*att 13 nhibernate join fluent

我正在使用Fluent NHibernate并有两个表;

客户[ID,名称,LanguageID]

语言[ID,描述]

我有一个具有以下属性的Customer实体; ID,名称,语言ID,语言

我想要做的是加入语言表以获取语言描述并将其放在客户实体的语言属性中.

我尝试过使用Join但我无法使用customer表上的LanguageID字段加入Languages表 - 它一直想要使用'ID'.

我的映射看起来像;

        Table("Customers");
        Not.LazyLoad();
        Id(c => c.ID).GeneratedBy.Assigned();
        Map(c => c.Name);
        Map(c => c.LanguageID);
        Join("Languages", join =>
        {
            join.KeyColumn("ID");
            join.Map(prop => prop.Language).Column("Description");
        });
Run Code Online (Sandbox Code Playgroud)

Jam*_*Ide 1

我以前没有使用过 Join,但我认为您希望在映射中使用来自 Customer 的外键:

    Table("ScriptActivities");
    Not.LazyLoad();
    Id(c => c.ID).GeneratedBy.Assigned();
    Map(c => c.Name);
    Map(c => c.LanguageID);
    Join("Languages", join =>
    {
        join.KeyColumn("LanguageID");
        join.Map(prop => prop.Language).Column("Description");
    });
Run Code Online (Sandbox Code Playgroud)

编辑添加:我能在连接映射上找到的最好的例子是Ayende 的博客。从该示例中,我认为 join 期望映射对象的 ID 作为连接表中的外键。您的架构将连接表 ID 作为映射对象中的 FK,因此连接将不起作用。我建议创建一个结合客户和语言的视图并映射它。