簡體   English   中英

流利的Nhibernate內部聯接

[英]Fluent Nhibernate 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; }

我需要這樣的查詢:

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

但我不知道如何告訴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>();

但我收到此錯誤:無法解析屬性:dbo:ImageManager.Model.Entity.Master

關於如何進行內部加入的任何想法? 提前致謝

首先,我將從dbo.Imagen中刪除dbo。 使用ICriteria接口,您需要考慮對象而不是數據庫表,即使可能存在對象到表和屬性到列的一對一映射。

編輯:
另一種選擇是使用QueryOver Lambda語法。

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

如果您已經修復過,我無法解決您之前的評論,但我會嘗試

ICriteria c = session.CreateCriteria(typeof(Master))

.CreateAlias("imagen", "img", JoinType.InnerJoin)
.CreateAlias("img.linea", "lin", JoinType.InnerJoin)
.Add(Restrictions.Eq("lin.Id", 5));

return c.List<Master>();

編輯:套管如下所述改變。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM