2010-02-21 6 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 형식 그래서 DateTime 대신 datetime 쓴,하지만 그건 중요하지 않습니다. 문제는 빌드 작업에있었습니다. 고맙습니다. – kubal5003