【问题标题】:Criteria representation of join query连接查询的条件表示
【发布时间】:2009-04-22 11:45:26
【问题描述】:

有两个类

1 类 A[属性:-aid,aname]

2类B[属性:-bid,A,bname]

DropDownList ddlist;

ICriteria criteria = ActiveRecordMediator<B>.GetSessionFactoryHolder()
                     .CreateSession(typeof(B)).CreateCriteria(typeof(B))
                     .setFetchMode(“A”,FetchMode.JOIN);

ddlistToLet.DataSource = criteria.List();

ddlistToLet.DataTextField = "bname";

ddlistToLet.DataValueField = "援助";

ddlistToLet.DataBind();

我收到这个错误

DataBinding:“B”不包含名为“aid”的属性。

如何解决这个问题?

【问题讨论】:

    标签: c# nhibernate criteria


    【解决方案1】:

    当使用条件时,NHibernate 将返回一个二维结果数组。我认为下拉菜单无法了解底层对象结构是什么。查看结果,您应该能够调整绑定。

    【讨论】:

      【解决方案2】:

      为属性提供值。

      class B
      {
        public A A { get; set;}
        public aid { get { return A.aid; } }
      }
      

      如果你不喜欢它,因为你不想改变你的类,那么你可以使用一个特殊的类来绑定到控件。

      【讨论】:

        【解决方案3】:

        将查询结果转换为更“绑定友好”的对象:

        public class MyDTO {
          public string BeeName { get; set; }
          public string AId { get; set; }
        }
        
        // .. (snip) ..
        
        ICriteria criteria = ActiveRecordMediator<B>.GetSessionFactoryHolder()
          .CreateSession(typeof(B)).CreateCriteria(typeof(B))
          .CreateCriteria(“A”)
          .SetProjection(Projections.ProjectionList()
            .Add(Projections.Property("bname", "BeeName"))
            .Add(Projections.Property("aid", "AId"))
          )
          .SetResultTransformer(Transformers.AliasToBean(typeof(MyDTO)));
        
        IList<MyDTO> results = criteria.List<MyDTO>();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-03-08
          • 2020-03-25
          • 2016-01-16
          • 2014-05-28
          • 2019-06-17
          • 2014-06-15
          • 2015-07-05
          相关资源
          最近更新 更多