2013-05-06 8 views
0

Я думал, что знаю путь NHibernate, но я должен делать что-то глупое. У меня есть таблица/класс под названием Категория. Когда я извлекаю данные из моего метода GetAll, ничего не возвращается, но ошибок тоже нет.NHibernate не видит таблицу, MappingException

Класс:

namespace Model 
{ 
    [Serializable] 
    public partial class Category 
    { 
     public virtual int Id { get; set; } 
     public virtual DateTime CreatedOn { get; set; } 
     public virtual DateTime UpdatedOn { get; set; } 

     public virtual string Name { get; set; } 

     public override bool Equals(object oneObject) 
     { 
      return oneObject is Category && (this.GetHashCode() == ((Category)oneObject).GetHashCode()); 
     } 

     public override int GetHashCode() 
     { 
      return Id.ToString().GetHashCode(); 
     } 

    } 
} 

Mapping файла:

<?xml version="1.0" encoding="utf-8"?> 
<hibernate-mapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" namespace="Model" assembly="Model" xmlns="urn:nhibernate-mapping-2.2"> 
    <class name="Category" lazy="true" table="`categories`"><!--test only!!--> 
     <id name="Id" access="property" column="`category_id`"> 
      <generator class="native" /> 
     </id> 
    <property name="Name" column="`name`" length="50" /> 
    </class> 
</hibernate-mapping> 

Если я добавить много к одной ссылки в другой таблице, то ошибки с: An association from the table manufacturer_categories refers to an unmapped class: Model.Category.

Мне кажется очевидным, что NHibernate не распознает мой файл сопоставления. Какую тупую вещь мне не хватает?

+1

Didja проверить очевидные вещи, как добавление .hbm части в файл XML, или убедившись, что он установлен в качестве встроенного контента? –

+0

@Cosmo_D - Да, я проверил .hbm.xml. Что такое «Встроенный контент»? – scojomodena

+0

См. Http://stackoverflow.com/questions/16340974/createsqlquery-works-but-queryover-doesnt-with-nhibernate/16377359#16377359 для встроенного ресурса – Rippo

ответ

1

Вы проверили, что ваш XML-файл помечены как встроенный ресурс?

enter image description here

2

Используя полное квалифицированное имя класса, может решить проблему

<class name="Modle.Category" lazy="true" table="`categories`"> 

Также убедитесь, что при настройке NHibernate вы добавили сборку, содержащую Категория файл отображения

Configuration cfg = new Configuration(); 
cfg.Configure(); 

// Add class mappings to configuration object 
Assembly mappingAssembly = AssemblyContatingTheCategoryMappingXMLFile; 
cfg.AddAssembly(mappingAssembly); 

Другой намек будет задайте файл xml как Embedded Resource на вкладке свойств

+0

Я добавил некоторые предложения, которые могут пригодиться. –

Смежные вопросы