【问题标题】:Referencing a joined entity when the foreign key column is on the joined table当外键列在连接表上时引用连接实体
【发布时间】:2011-09-14 09:01:22
【问题描述】:

我有以下类映射: 课本:

Table("BOOKS")
Id(b => b.Id)
Join("BOOKS_EXTRA_INFO", j =>
    {
         j.Optional();
         j.References(b => b.Author);
    }

班级作者:

TABLE("AUTHORES")
Id(a => a.Id)
HasMany(a => a.Books).Table("BOOKS_EXTRA_INFO")

此映射的问题在于,当我尝试执行以下操作时:

var a = Session.Get<Author>(1);

图书收藏为空。我检查了 NH 生成的 SQL,问题出在 where 子句中:

Select ... WHERE BOOKS.AUTHOR_ID = 1

正确的 Where 子句应该是:

Select ... WHERE BOOKS_EXTRA_INFO.AUTHOR_ID = 1

我发现了这个问题:Hibernate <set> key from joined table 这与我的问题非常相似(如果不一样的话),但解决方案使用 xml 映射,我不明白如何在流利的映射中做同样的事情。

我无法更改数据库架构。

我的问题的正确流畅映射是什么?

编辑:更新了映射以显示我拥有的确切映射。

【问题讨论】:

    标签: c# .net nhibernate fluent-nhibernate nhibernate-mapping


    【解决方案1】:

    您链接的答案指定了集合上的表名。这可以在 Fluent 中轻松完成:

    HasMany(a => a.Books).Table("BOOKS_EXTRA_INFO");
    

    【讨论】:

    • 我忘了提到我已经尝试过了,但没有帮助。这可能是 fluent nhibernate 中的错误吗?
    • 如果那里指定了表,您是否检查了生成的 XML 映射?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 1970-01-01
    • 2019-01-21
    • 1970-01-01
    • 2013-07-19
    • 1970-01-01
    相关资源
    最近更新 更多