2010-02-21 5 views
1

J'ai une table comme:NHibernate problème de cartographie

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] 

Classe:

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; 
      } 
     } 
    } 
} 

fichier de mappage:

<?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> 

toutes les autres classes travaille, je n'ai problème avec cette un.

requête exécution comme:

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

résultats à une exception:

MoviesHistory est pas sur la carte [de MoviesHistory]

Tout le monde peut me dire ce qui est faux? Je soupçonne que la colonne d'identification pourrait être fausse, mais ne peux rien trouver à ce sujet.

Répondre

4

Assurez-vous que votre .hbm.xml a ce Construisons l'action définie sur intégrée des ressources dans votre projet, sinon il ne sera pas inclus dans les applications comme NHibernate démarre.

En outre, pas positif, il importe, mais DateTime devrait avoir boîtier propre à être sûr (pas sûr si l'analyseur NHibernate se soucie plus, il n'a pas à un moment donné):

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

Je pensais que c'était la Type SQL donc j'ai écrit datetime au lieu de DateTime, mais cela ne semble pas avoir d'importance. Le problème était dans l'action de construction. Merci beaucoup. – kubal5003