Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [NHibernate] KeyNotFoundException 
V
    Опции темы
kosmonaFFFt
Дата 13.8.2009, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 538
Регистрация: 14.4.2008
Где: Иннополис

Репутация: нет
Всего: 5



Доброго времени суток...

При выполнении такого кода:
Код

var session = configuration.BuildSessionFactory().OpenSession();

вылазит экзепшн KeyNotFoundException
Начало это происходить при добавлении двух классов и маппингов к ним...
в сведениях выдает:
Код

System.Collections.Generic.KeyNotFoundException не обработано
  Message="Данный ключ отсутствует в словаре."
  Source="mscorlib"
  StackTrace:
       в System.ThrowHelper.ThrowKeyNotFoundException()
       в System.Collections.Generic.Dictionary`2.get_Item(TKey key)
       в NHibernate.Cfg.Configuration.Mapping.GetPersistentClass(String className)
       в NHibernate.Cfg.Configuration.Mapping.GetIdentifierType(String className)
       в NHibernate.Type.EntityType.GetIdentifierType(IMapping factory)
       в NHibernate.Type.EntityType.GetIdentifierOrUniqueKeyType(IMapping factory)
       в NHibernate.Persister.Entity.AbstractPropertyMapping.InitIdentifierPropertyPaths(String path, EntityType etype, String[] columns, IMapping factory)
       в NHibernate.Persister.Entity.AbstractPropertyMapping.InitPropertyPaths(String path, IType type, String[] columns, String[] formulaTemplates, IMapping factory)
       в NHibernate.Persister.Entity.AbstractEntityPersister.InitOrdinaryPropertyPaths(IMapping mapping)
       в NHibernate.Persister.Entity.AbstractEntityPersister.InitPropertyPaths(IMapping mapping)
       в NHibernate.Persister.Entity.AbstractEntityPersister.PostConstruct(IMapping mapping)
       в NHibernate.Persister.Entity.SingleTableEntityPersister..ctor(PersistentClass persistentClass, ICacheConcurrencyStrategy cache, ISessionFactoryImplementor factory, IMapping mapping)
       в NHibernate.Persister.PersisterFactory.CreateClassPersister(PersistentClass model, ICacheConcurrencyStrategy cache, ISessionFactoryImplementor factory, IMapping cfg)
       в NHibernate.Impl.SessionFactoryImpl..ctor(Configuration cfg, IMapping mapping, Settings settings, EventListeners listeners)
       в NHibernate.Cfg.Configuration.BuildSessionFactory()
       в ReklamaProject.MainForm..ctor() в D:\proj\ReklamaProject\ReklamaProject\MainForm.cs:строка 25
       в ReklamaProject.Program.Main() в D:\proj\ReklamaProject\ReklamaProject\Program.cs:строка 17
       в System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
       в System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       в Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       в System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       в System.Threading.ThreadHelper.ThreadStart()
  InnerException:

Подскажите плс из за чего это может происходить и как с этим бороться?
Заранее спасибо...


--------------------
user posted image
PM MAIL ICQ   Вверх
SLeN
Дата 13.8.2009, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 8.12.2006
Где: SPB

Репутация: 1
Всего: 4



Код классов и маппинг в студию.

P.S.:

А что это там по русски то написано? Сам перевел или русская студия стоит (я видел пару баннеров про такую =) )?

Это сообщение отредактировал(а) SLeN - 13.8.2009, 19:21
--------------------
Православные не проходите мимо! Люди нуждаются в вас
PM MAIL   Вверх
kosmonaFFFt
Дата 14.8.2009, 07:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 538
Регистрация: 14.4.2008
Где: Иннополис

Репутация: нет
Всего: 5



Русская студия с DreamSpark + русский MSDN... smile
Код

using System;
using Iesi.Collections.Generic;

namespace ReklamaProject
{
    class Announcement
    {
        private Set<Number> numbers = new HashedSet<Number>();

        public virtual Int32 Id { get; set; }

        public virtual Rubric Rubric { get; set; }

        public virtual Subrubric Subrubric { get; set; }

        public virtual String Text { get; set; }

        public virtual String Telephon { get; set; }

        public virtual AnnouncementAdditionals Additionals { get; set; }

        public virtual Int32 GetWordsCount()
        {
            //TODO: сделать подсчет количества слов в тексте объявления.
            return 0;
        }

        public virtual Set<Number> Numbers
        {
            get
            {
                return this.numbers;
            }

            set
            {
                this.numbers = value;
            }
        }

        public virtual Boolean IsNal { get; set; }

        public virtual Manager Manager { get; set; }
    }
}


Код

<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="ReklamaProject" assembly="ReklamaProject">
  <class name="Announcement">
    <id name="Id">
      <generator class="identity"/>
    </id>
    <one-to-one name="Rubric" class="Rubric"/>
    <one-to-one name="Subrubric" class="Subrubric"/>
    <property name="Text" not-null="true"/>
    <property name="Telephon" not-null="true"/>
    <one-to-one name="Additionals" class="AnnouncementAdditionals"/>
    <set name="Numbers" table="NumberAnnouncements">
      <key column="AnnouncementId"/>
      <many-to-many column="NumberId" class="Number"/>
    </set>
    <property name="IsNal" not-null="true"/>
    <one-to-one name="Manager" class="Manager"/>
  </class>
</hibernate-mapping>


Код

using System;
using Iesi.Collections.Generic;

namespace ReklamaProject
{
    class Number
    {
        private ISet<Announcement> anns = new HashedSet<Announcement>();

        public virtual Int32 Id { get; set; }

        public virtual Int32 Name { get; set; }

        public virtual ISet<Announcement> Announcements
        {
            get
            {
                return this.anns;
            }

            set
            {
                this.anns = value;
            }
        }
    }
}


Код

<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="ReklamaProject" assembly="ReklamaProject">
  <class name="Number">
    <id name="Id">
      <generator class="identity"/>
    </id>
    <property name="Name" unique="true" not-null="true"/>
    <set name="Announcements" table="NumberAnnouncements">
      <key column="NumberId"/>
      <many-to-many column="AnnouncementId" class="Announcement"/>
    </set>
  </class>
</hibernate-mapping>


После добавления этих классов с маппингами вылезло исключение...


--------------------
user posted image
PM MAIL ICQ   Вверх
SLeN
Дата 14.8.2009, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 8.12.2006
Где: SPB

Репутация: 1
Всего: 4



Попробуй поменять Set<Number> в Announcement на ISet<Number> как в приватном поле так и в свойтсве


&  smile  уезжаю из города (по дальше от интернета и компьютеров) до среды, так что временно не участвую в дальнейшем обсуждении
--------------------
Православные не проходите мимо! Люди нуждаются в вас
PM MAIL   Вверх
kosmonaFFFt
Дата 23.8.2009, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 538
Регистрация: 14.4.2008
Где: Иннополис

Репутация: нет
Всего: 5



Епрст... Точно... Спасиб, помогло...


--------------------
user posted image
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0690 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.