DuplicateMappingException: дублирование сопоставления ролей коллекции при добавлении сборок - PullRequest
2 голосов
/ 01 августа 2020

Я пытаюсь сделать сопоставление "многие к одному", но не удается добавить сборку документа с NHibernate.MappingException:

"Не удалось скомпилировать документ сопоставления: TestForElma.Models. Person.hbm. xml "DuplicateMappingException: дублирование сопоставления ролей коллекции TestForElma.Models.Person.Documents

public static ISession OpenSession()
        {
            var configuration = new Configuration();
            var configurePath = HttpContext.Current.Server.MapPath(@"~\Models\Nhibernate\nhibernate.cfg.xml");
            configuration.Configure(configurePath);
            configuration.AddAssembly(typeof(Person).Assembly);
            configuration.AddAssembly(typeof(Document).Assembly);
            ISessionFactory sessionFactory = configuration.BuildSessionFactory();
            new SchemaUpdate(configuration).Execute(true, true);
            return sessionFactory.OpenSession();
        }

А вот и hbm. xml файлы

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="true" assembly="TestForElma" namespace="TestForElma.Models">
  <class name="Document" dynamic-update="true" >
    <cache usage="read-write"/>
    <id name="Id" type="int">
      <generator class="native" />
    </id>
    <property name="Name" />
    <property name="CreationDate" />
    <property name="BinaryData" />
    <many-to-one name="Author" class="Person"
                 column="AuthorId" cascade = "save-update"/>
  </class>
</hibernate-mapping>

И

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="true" assembly="TestForElma" namespace="TestForElma.Models">
  <class name="Person" dynamic-update="true" >
    <cache usage="read-write"/>
    <id name="Id" type="int">
      <generator class="native" />
    </id>
    <property name="Name" />
    <property name="Password" />
    <bag name="Documents" inverse="true">
      <key column="AuthorId"/>
      <one-to-many class="Document"/>
    </bag>
  </class>
</hibernate-mapping>

И nhibernate.cfg

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>
    <property name="connection.provider">
      NHibernate.Connection.DriverConnectionProvider
    </property>
    <property name="connection.driver_class">
      NHibernate.Driver.SqlClientDriver
    </property>
    <property name="connection.connection_string">
      Server=Local\SQLEXPRESS; database=DbName; Integrated Security=SSPI;
    </property>
    <property name="dialect">
      NHibernate.Dialect.MsSql2008Dialect
    </property>
  </session-factory>
</hibernate-configuration>

Он также не создает новые таблицы в базе данных.

Ответы [ 2 ]

0 голосов
/ 10 августа 2020

Я начал использовать Fluent Nhibernate, и он работает.

0 голосов
/ 09 августа 2020

Замените

configuration.AddAssembly(typeof(Person).Assembly);
configuration.AddAssembly(typeof(Document).Assembly);

на

configuration.AddClass(typeof(Person));
configuration.AddClass(typeof(Document));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...