[英]Fluent NHibernate join not using primary key
我试图从连接表中获取单个属性,其中我的主表中的非PK连接到外表的PK。 下面是我想要完成的一个过于简单的例子( 我不想引用外国实体 ):
表:
CREATE TABLE Status
(
Id int,
Body text,
CategoryId int
)
CREATE TABLE Category
(
Id int,
Name text
)
SQL生成:
SELECT Id, Body, CategoryId, Category.Name AS CategoryName
FROM Status
LEFT JOIN Category ON Category.Id = Status.CategoryId
我试图在StatusMap中映射这样的连接,但它似乎加入了两个主键(其中Status.Id = Category.Id):
Join("Category" m =>
{
m.Optional();
m.KeyColumn("CategoryId");
m.Map(x => x.CategoryName, "Name");
});
据我所知,使用Fluent的唯一方法是映射到您目前正在进行的视图。 Join()
将始终映射到父表的主键。 KeyColumn方法仅指定子表的键列,在您的情况下是Category表。
要使用上面的简化版本来实现所需的SQL,您可能希望使用References
来定义状态和类别之间的多对一关系。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.