2011-04-20 42 views
0

的各种对象都是有效的,并在应用程序中其他地方使用:错误的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)的' 有一些无效 参数...门面\ UserFacade.cs 100 25 myApp.Business

错误35参数1:不能从 'myApp.DataAccess.Query' 转换到 'INT' ...门面\ 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)工作,但塔t似乎不正确。

+0

加载(q.UniqueResult ()); – rebelliard 2011-04-20 08:50:54

回答

1

您上面概述的接口方法需要一个整数,并且您试图将它传递给一个Query对象。对我来说,看起来像是一个非常枯燥的问题。

0

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

  • 你已经有一个用户实例,为什么你需要一个新的?
  • 根据您真正想要完成的操作,您可以使用session.Load<EntityType>(ID)session.Get<EntityType>(ID)。当你已经知道Id时,不需要查询。