流利的Nhibernate内部联接

llo*_*ono 3 c# mapping nhibernate fluent inner-join

我有3张桌子(Master,Imagen,Linea):

Master
public virtual int Id { get; private set; }
public virtual Imagen imagen { get; set; }

Imagen
public virtual int Id { get; private set; }
public virtual Linea linea { get; set; }

Linea
public virtual int Id { get; private set; }
public virtual String Nombre { get; set; }
Run Code Online (Sandbox Code Playgroud)

我需要这样的查询:

SELECT * FROM dbo.Master 
INNER JOIN dbo.Imagen ON dbo.Master.imagen_id = dbo.Imagen.Id 
INNER JOIN dbo.Linea ON dbo.Imagen.linea_id = dbo.Linea.Id 
WHERE dbo.Linea_Id = 5
Run Code Online (Sandbox Code Playgroud)

但我不知道如何告诉Fluent Nhibernate使用automapper创建此查询.到目前为止,我试过这个:

ICriteria c = session.CreateCriteria(typeof(Master))
  .CreateAlias("dbo.Imagen", "img", JoinType.InnerJoin)
  .Add(Restrictions.Eq("img.linea_id", id_linea));

return c.List<Master>();
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:无法解析属性:dbo:ImageManager.Model.Entity.Master

关于如何进行内部加入的任何想法?提前致谢

Nat*_*her 8

首先,我将从dbo.Imagen中删除dbo.使用ICriteria接口,您需要考虑对象而不是数据库表,即使可能存在对象到表和属性到列的一对一映射.

编辑:
另一种选择是使用QueryOver Lambda语法.

   var list = session.QueryOver<Master>()
                        .JoinQueryOver(master => master.imagen)
                        .Where(imagen => imagen.linea.Id == 5)
                        .List();
Run Code Online (Sandbox Code Playgroud)