hql Query对象出错

时间:2011-04-20 01:18:04

标签: .net nhibernate hql

各种对象都是有效的,并在应用程序的其他地方使用:

public virtual Discount SelectDiscountByUser(User currentUser)
{
    Query q = new Query();
    q.Criteria.Add(new Criteria("User.ID", CriteriaOperator.Equal, currentUser.ID));

    User user = DataContext.Load<User>(q);
   ...
}

我在'.Load(q)'行

上遇到2个编译器错误
  

错误34最佳重载方法   匹配   'myApp.DataAccess.IDataContext.Load(INT)'   有一些无效的   参数... Facade \ UserFacade.cs 100 25 myApp.Business

     

错误35参数1:无法转换   从'myApp.DataAccess.Query'到   'int'... Facade \ UserFacade.cs 100 48 myApp.Business

界面中的行如下所示:

     public interface IDataContext
     {
         EntityType Load<EntityType>(int ID) where EntityType : class, new();
         ...

我可以通过返回列表来清除错误条件:

IList<User> user = DataContext.LoadList<User>(q);

我可以使用该列表(返回用户[0] .SubscriptionDiscount;)但这似乎不对。

2 个答案:

答案 0 :(得分:1)

您在上面概述的接口方法采用整数,并且您尝试将其传递给Query对象。对我来说,这似乎是一个非常严重和干燥的问题。

答案 1 :(得分:0)

Cole和binaryhowl都解释了这个问题,但是你不必要地使事情变得复杂。

  • 您已经拥有一个User实例,为什么需要一个新实例?
  • 您可以使用session.Load<EntityType>(ID)session.Get<EntityType>(ID),具体取决于您真正想要完成的工作。当您已经知道Id时,不需要查询。