Настройте nHibernate для решения с несколькими проектами - PullRequest
1 голос
/ 16 марта 2010

Я делаю проект с C # winforms. Этот проект состоит из:

альтернативный текст http://img139.imageshack.us/img139/2540/esquemaw.png

  • Клиентский проект: Windows Forms, где пользователь будет вызывать операции CRUD;
  • Серверный проект;
  • Общий проект: Этот проект будет содержать модели (на изображении есть только модель элемента);
  • Проект ListSingleton: Удаленный объект, который будет выполнять операции с моделями;

Я пытаюсь использовать стиль из 3 слоев, в котором КЛИЕНТ и СЕРВЕР будут слоями представления , LISTSINGLETON будет контроллерным слоем (где создаются все объекты) , и ОБЩИЙ проект - это слой моделей ...

У меня уже все коммуникации работают, но теперь мне нужно поработать над сохранением данных в базе данных mysql. Я пытался использовать nHibernate, но у меня возникли некоторые проблемы.

Моя главная проблема заключается в том, как организовать мою конфигурацию гибернации. - В каком проекте я храню карту? Общий проект?

  • В каком проекте я сохраняю файл конфигурации Hibernate (App.config)? Проект ListSingleton?

  • В каком проекте я делаю это:

        Configuration cfg = new Configuration();
        cfg.AddXmlFile("Item.hbm.xml");
        ISessionFactory factory = cfg.BuildSessionFactory();
        ISession session = factory.OpenSession();
        ITransaction transaction = session.BeginTransaction();
    
        Item newItem = new Item("BLAA");
    
        // Tell NHibernate that this object should be saved
        session.Save(newItem);
    
        // commit all of the changes to the DB and close the ISession
        transaction.Commit();
        session.Close();
    

В проекте ListSingleton? Хотя у меня была ссылка на Общий проект в ListSingleton, я продолжаю получать сообщение об ошибке в строке addXml…


  • И когда у меня есть 2 проекта, один с моделями и отображениями, а другой, где я использую спящий режим (этот проект имеет ссылку на проект моделей), как мне сделать "cfg.AddXmlFile (" User.hbm.xml " );» Я продолжаю получать сообщение «Не удалось настроить хранилище данных из файла User.hbm.xml», когда я использую эту структуру проекта 2.

Мое сопоставление правильное, потому что я пытался с помощью одного проекта, и он работал: X

Ответы [ 2 ]

2 голосов
/ 16 марта 2010

В каком проекте я сохраняю отображение? Общий проект?

Да. Файлы сопоставления должны быть в том же проекте, что и модели.

В каком проекте я сохраняю файл конфигурации hibernate (App.config)? Проект ListSingleton?

В клиентском проекте. Я предполагаю, что клиентский проект будет передавать объекты ListSingleton, который будет воздействовать на них.

В каком проекте я делаю это:

В клиентском проекте. Я хочу отметить, что вы должны создавать ISessionFactory только один раз.

0 голосов
/ 16 марта 2010

Ну, я узнал ответы на мои вопросы

В каком проекте я храню отображение? Общий проект?

Как сказал Джейми Иде, да, это должно быть в слое моделей.

В каком проекте я храню файл конфигурации гибернации (App.config)? Проект ListSingleton?

В каком проекте я делаю это:

Этот файл конфигурации и вся конфигурация гибернации должны находиться на уровне контроллера, поэтому он находится в проекте ListSingleton;

И когда у меня есть 2 проекта, один с модели и сопоставления и другое где плохо использовать спящий режим (это Проект имеет ссылку на модели проект), как я могу сделать "Cfg.AddXmlFile (" User.hbm.xml ");" я продолжаю получать "Не удалось настроить хранилище данных из файла User.hbm.xml «Когда я использую эту 2 структуру проекта.

Вы должны настроить файл сопоставления как Embedded Resource и Copy, если новее в свойствах.

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