2010-02-21 181 views
1

我有一個表,如:NHibernate的映射問題

CREATE TABLE [dbo].[MOVIES_HISTORY](
[DATE] [datetime] NOT NULL, 
[COUNT] [int] NOT NULL CONSTRAINT [DF_MOVIES_HISTORY_COUNT] DEFAULT ((0)), 
CONSTRAINT [PK_MOVIES_HISTORY] PRIMARY KEY CLUSTERED 
(
[DATE] ASC 
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] 
) ON [PRIMARY] 

類:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

namespace Kinoplex.Models 
{ 
    public class MoviesHistory 
    { 
     private DateTime date; 
     private int count; 

     public DateTime Date 
     { 
      get 
      { 
       return date; 
      } 
      set 
      { 
       date = value; 
      } 
     } 

     public int Count 
     { 
      get 
      { 
       return count; 
      } 
      set 
      { 
       count = value; 
      } 
     } 
    } 
} 

映射文件:

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" 
        namespace="Kinoplex.Models" 
        assembly="Kinoplex"> 

    <class name="MoviesHistory" 
     dynamic-insert="true" 
     dynamic-update="true" 
     lazy="false" 
     table="MOVIES_HISTORY"> 


    <id name ="Date" column="DATE" type="datetime"> 
    </id> 

    <property name ="Count" > 
     <column name="COUNT" sql-type="int" not-null="true"></column> 
    </property> 



    </class> 
</hibernate-mapping> 

每隔類的工作,我只是有這個問題一。

IQuery query = this.session.CreateQuery("from MoviesHistory"); 

導致異常:像

執行查詢

MoviesHistory不是[從MoviesHistory] ​​

誰能告訴我什麼是錯的映射?我懷疑id列可能是錯的,但找不到任何相關信息。

回答

4

確保您.hbm.xml有它的生成操作設置爲在你的項目中嵌入的資源,否則也不會被包含在映射爲NHibernate的啓動。

而且,不積極它很重要,但DateTime應該有適當的外殼是安全的(不知道NHibernate的解析器問津了,它沒有在一個點):

<id name="Date" column="DATE" type="DateTime"> 
+0

我以爲是SQL類型,所以我寫日期時間而不是日期時間,但這似乎並不重要。問題在於構建操作。非常感謝你。 – kubal5003