2009-12-27 48 views
1

我正在使用ActiveRecord Facility Active Record,並試圖使用自定義NHibernate查詢。我是否需要爲類定義映射,即使它擴展了ActiveRecordBase並具有ActiveRecord屬性?「表未映射」與NHibernate +活動記錄

[ActiveRecord("VotesOnQuestions")] 
public class VoteOnQuestion : ActiveRecordBase<VoteOnQuestion> 
{ 
    [CompositeKey] 
    public VoteKey Key { get; set; } 

    [Property] 
    public VoteType Vote { get; set; } 
} 

我試圖創建以下查詢:

session.CreateQuery("SELECT vote, COUNT(*) FROM votesonquestions" + 
        " WHERE questionid = :questionId GROUP BY vote"); 

但我發現了此異常:

「votesonquestions沒有映射」

+1

你有一個「votesonquestions」類嗎?您必須有一個。 – 2009-12-27 21:25:06

+0

我有一個,編輯我的答案包括它。 – ripper234 2009-12-28 05:49:50

+0

該類名爲** VoteOnQuestion **,該查詢表示** votesonquestions **(注意case和extra * s *)。 – 2009-12-28 12:19:38

回答

2

正如例外說的那樣,你需要一個標有[ActiveRecord]的類,它將votesonquestions(我猜這就是所謂的那樣)表。

繼承自ActiveRecordBase是可選的。

在查詢中,您只能引用映射類(區分大小寫),而不是表。所以在這種情況下,查詢應該是:

session.CreateQuery("SELECT vote, COUNT(*) FROM VoteOnQuestion" + 
        " WHERE questionid = :questionId GROUP BY vote");