代码之家  ›  专栏  ›  技术社区  ›  David

为什么在查询外键字段时使用join?

  •  1
  • David  · 技术社区  · 14 年前

    我有一个对象模型有点像这样:

    public class Foo
    {
      public int Id {get;set;}
      public string FooName {get;set;}
    }
    
    public class Bar
    {
      public int Id {get;set;}
      public Foo Foo {get;set;}
    }
    

    它们以典型的一对多方式对应于数据库中的表。

    使用Linq to NHibernate根据条形图的Foo.Id属性查询条形图(该属性只需查询条形图表中的FoodId外键)就会生成带有连接的SQL!

    有人知道为什么会这样吗?这是标准的NHibernate行为吗?或者与Linq提供商有关?或者甚至是FluentNHibernate(我用它来映射)?

    谢谢

    大卫

    1 回复  |  直到 14 年前
        1
  •  1
  •   DanP    14 年前

    这种行为是由NHibernate.Linq引起的(我相信它与表达式转换为查询的ICriteria表示的方式有关)。据我所知,没有办法直接使用Nhibernate.Linq来解决这个问题,但是您可以通过直接使用HQL或ICriteria来实现您想要的结果。