2014-01-05 4 views
0

Я начинаю свое приключение с nHibernate, и у меня есть проблема.NHibernate.MappingException: Нет persister для

Мой код: Модель/Project.cs

namespace entity1.Model 
{ 
    public class Project 
    { 
     public Guid Id { get; set; } 
     public string Name { get; set; } 
     public string Description { get; set; } 
    } 
} 

Модель/Project.hbm.xml

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="true" namespace="entity1.Model" assembly="entity1.Model"> 
    <class name="entity1.Model.Project, entity1.Model" lazy="false"> 
    <id name="id" column="prj_id"></id> 
    <property name="Name" column="prj_name" /> 
    <property name="Description" column="prj_description" /> 
    </class> 
</hibernate-mapping> 

Web.config

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" > 
    <session-factory> 
     <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property> 
     <property name="connection.connection_string">Server=(local);initial catalog=todo;Integrated Security=True</property> 
     <property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property> 
     <property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property> 
     <mapping assembly="entity1.Model"/> 
    </session-factory> 
    </hibernate-configuration> 

Test.aspx.cs

Project project = new Project(); 
// [...] 
Configuration c = new Configuration(); 
c.AddAssembly(Assembly.GetCallingAssembly()); 

ISessionFactory factory = c.BuildSessionFactory(); 
using (ISession session = factory.OpenSession()) { 
    using(ITransaction transaction = session.BeginTransaction()){ 
     session.Save(project); 
     transaction.Commit(); 
} 

И исключение: Нет стойкая бактерия для: entity1.Model.Project

Что не так?

Я искренне благодарю всех за помощь. Извините за мой английский. Это не слишком хорошо.

ответ

1

Вы уверены, что ваша сборка называется entity1.Model? Я думаю, что это просто пространство имен, а сборка entity1 вправо?

Если вы не уверены в свойствах своего проекта.

А затем изменить его в вашем web.config

<mapping assembly="entity1"/> 

и отображение файла

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="true" namespace="entity1.Model" assembly="entity1"> 

, и вы, возможно, отсутствует вызов c.Configure() для загрузки XML-конфигурации.

+0

Я проверил сборку в свойствах проекта. Существует сборка: entity1. Основное пространство имен: entity1. Далее я устанавливаю пространство имен и сборку в файле сопоставления и в web.config для namespace = "entity1.Model" и assembly = "entity1" К сожалению, это неправильно. – kalinowski

+0

, и вам может не хватать вызов 'configuration.Configure()' – MichaC

+0

Да! Это его! Большое спасибо! – kalinowski

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