Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用NHibernate左键连接两个不同的表_C#_Nhibernate_Fluent Nhibernate - Fatal编程技术网

C# 如何使用NHibernate左键连接两个不同的表

C# 如何使用NHibernate左键连接两个不同的表,c#,nhibernate,fluent-nhibernate,C#,Nhibernate,Fluent Nhibernate,我有三张桌子(表A、B和C)。 我想做以下工作: 左连接A和B,左连接A和C 现在我已经使用CreateCriteria,使用jointype进行连接,这在一定程度上是有效的,但它会引发查询异常。这似乎是因为它似乎试图把B和C左连接,而不是A和C 代码: Currency=session.CreateCriteria(货币类型),“表A”) .CreateCriteria(“FXRates”、“表B”, JoinType.LeftOuterJoin, 表达式.Eq(“fxrate.RateDat

我有三张桌子(表A、B和C)。 我想做以下工作: 左连接A和B,左连接A和C

现在我已经使用CreateCriteria,使用jointype进行连接,这在一定程度上是有效的,但它会引发查询异常。这似乎是因为它似乎试图把B和C左连接,而不是A和C

代码:

Currency=session.CreateCriteria(货币类型),“表A”)
.CreateCriteria(“FXRates”、“表B”,
JoinType.LeftOuterJoin,
表达式.Eq(“fxrate.RateDate”,date))
.CreateCriteria(“基金会”、“表C”,
JoinType.LeftOuterJoin,
表达式.Eq(“fundingrate.RateDate”,日期))
.Add(Restrictions.IsNotNull(“currency.code”))
.List();
如果我遗漏了任何内容或没有提供足够的详细信息,请提前向我道歉。如果您需要更多信息,请告诉我。

您可以使用NHibernate“QueryOver”来完成:

session.QueryOver<Item_A>()
   .Left.JoinQueryOver(item_A => item_A.Item_B)
   .Left.JoinQueryOver(item_A => item_A.Item_C)
   .TransformUsing(Transformers.DistinctRootEntity)
   .List();
session.QueryOver()
.Left.JoinQueryOver(项目A=>项目A.项目B)
.Left.JoinQueryOver(项目A=>项目A.项目C)
.变压器使用(变压器.距离)
.List();
您可以使用NHibernate“QueryOver”来执行此操作:

session.QueryOver<Item_A>()
   .Left.JoinQueryOver(item_A => item_A.Item_B)
   .Left.JoinQueryOver(item_A => item_A.Item_C)
   .TransformUsing(Transformers.DistinctRootEntity)
   .List();
session.QueryOver()
.Left.JoinQueryOver(项目A=>项目A.项目B)
.Left.JoinQueryOver(项目A=>项目A.项目C)
.变压器使用(变压器.距离)
.List();

谢谢安东,我会看一看,然后给你回复。谢谢安东,我会看一看,然后给你回复。