C # Nhibernate: атрибут сборки не объявлен - PullRequest
1 голос
/ 24 мая 2011

Я пытался исправить свою проблему в течение нескольких часов, поэтому я думаю, что пришло время разместить вопрос здесь.

Проблема
Когда я запускаю свой модульный тест, чтобы проверить мою конфигурацию гибернации, это дает мне исключение:

Произошло исключение при разборе конфигурация: «сборка» атрибут не объявлен.

Мой код
hibernate.cfg.xml

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" assembly="Pccleaner.Dmt">
<session-factory>
    <property name='proxyfactory.factory_class'>NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property>
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
    <property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property>
    <property name="connection.connection_string">Database=****;Data Source=localhost;User Id=****;Password=*****</property>
    <property name="dialect">NHibernate.Dialect.MySQLDialect</property>
    <property name="show_sql">true</property>
    <mapping assembly="Pccleaner.Dmt"/>
</session-factory>

myunittest.cs

var cfg = new Configuration().Configure();
new SchemaExport(cfg).Execute( false, true, false);

Что я пробовал
Я нашел примеры добавления вручную сборки. Я предпочитаю устанавливать свою сборку в файле конфигурации, но чтобы она заработала, я попробовал этот код:

var cfg = new Configuration();
cfg.AddAssembly("Pccleaner.Dmt");
cfg.Configure();
new SchemaExport(cfg).Execute( false, true, false);

Этот код привел к следующему исключению:

Не удалось скомпилировать документ сопоставления: Pccleaner.Dmt.Mappings.Project.hbm.xml ----> System.InvalidOperationException: не удалось найти диалект в конфигурации

Файл конфигурации Project.hbm.xml имеет следующий вид:

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Pccleaner.Dmt" namespace="Pccleaner.Dmt">
 <class name="Project" table="pcc_dmt_project">
  <id name="ID" column="id">
   <generator class="identity" />
  </id>
  <property name="Name" not-null="true" column="name" length="50"/>
  <property name="SvnRepository" not-null="true" column="svn_repository" />
  <property name="SvnUserName" not-null="false" column="svn_user_name"/>
  <property name="SvnUserPassword" not-null="false" column="svn_user_password"/>
  <bag name="Revisions" cascade="all">
   <key column="project_id"/>
   <one-to-many class="Pccleaner.Dmt.Revision"/>
  </bag>
 </class>
</hibernate-mapping>

Project.cs:

namespace Pccleaner.Dmt {
public class Project {
    public virtual int ID { get; set; }
    public virtual string Name { get; set; }
    public virtual string SvnRepository { get; set; }
    public virtual string SvnUserName { get; set; }
    public virtual string SvnUserPassword { get; set; }
    public virtual IList<Revision> Revisions { get; set; }
}
}

Поиск различных исключений не дает мне никаких подсказок, чтобы это исправить. Он работал до того, как я удалил дублированный конфигурацию гибернации в моем тестовом проекте. Для каждого файла конфигурации Hibernate я изменил свойства, чтобы встроить его в качестве ресурса. Конфигурационный файл hibernate копируется в мою папку bin моего тестового проекта.

Я новичок в спящем режиме, и различные исключения и способы настройки спящего режима вызывают у меня головокружение. Ребята, можете ли вы помочь мне, пожалуйста?

offtopic: создание новой учетной записи на этом веб-сайте не работает: исключение не найдено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...