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

从ISQLQuery中获取映射实体而不使用AddEntity

  •  0
  • Jaguar  · 技术社区  · 14 年前

    考虑这些POCO:

    class Foo {
      int Id {get;set;}
      string Name {get;set;}
    }
    
    class Bar {
      int Id {get;set;}
      string PropA {get;set;}
      Foo PropB {get;set;} 
    }
    

    ISQLQuery 根实体为 Bar

    ISQLQuery barsAround = nhSes.CreateSQLQuery("select b.Id, b.PropA, {????} from Bar b inner join Foo f on f.Id = b.FK_FooId");
    barsAround.SetResultTransformer(Transformers.AliasToBean<Bar>());
    IList<Bar> results = barsAround.List<Bar>();
    

    其中在{???}中是获取b.Id和b.Name的片段,并且是实体栏的PropB属性。

    ISQLQuery.AddEntity() 因为这样会产生托管实体,而我不能使用托管实体。获取的条形图是条形图的版本,因此每行的相同Id将终止NHibernate引擎。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Diego Mijelshon    14 年前

    你可以写你自己的特别变压器。这不难,看看 AliasToBeanResultTransformer .

    推荐文章