流利的NHibernate加入不使用主键

我试图从一个连接表中获取一个单独的属性,在这个连接表中,我的主表中的一个非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来定义状态和类别之间的多对一关系。

链接地址: http://www.djcxy.com/p/47213.html

上一篇: Fluent NHibernate join not using primary key

下一篇: Strawberry Perl not recognising special variable for OSNAME