2011-04-20 39 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時,不需要查詢。