powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NHbernate: config-файлы
6 сообщений из 6, страница 1 из 1
NHbernate: config-файлы
    #38613459
Валисий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго времени суток!
Пишу проект на ASP.NET, который должен работать с БД MySQL с помощью NHibernate.
Я добавил в проект ссылку на NHibernate.dll, который находится в отдельной папке, вне папки решения, и написал xml.config. При попытке запуска появилась ошибка: файл hibernate.cfg.xml не найден в директории .../Projects/Lab_KPT4/Lab_KPT4/bin. Я его туда добавил. Теперь появляется ошибка: resource not found: library.hbm.xml Это файл маппинга.
Оба файла я просто добавлял в проект, они лежат в директории .../Projects/Lab_KPT4/Lab_KPT4.
Привожу листинги:

library.hbm.xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
   assembly="Lab_KPT4" namespace="Lab_KPT4">
  <class name="Tovar" table="tovar">
    <id name="tovarid" column="Tovar_ID" type="Int32">
      <generator class="identity"/>
    </id>
    <property name="tname" column="TName" type="String"/>
    <property name="measure" column="Measure" type="String"/>
    <property name="bprice" column="Buying_Price" type="Double"/>
    <property name="sprice" column="Selling_Price" type="Double"/>
  </class>
  <class name="Postavshiki" table="postavshiki">
    <id name="suppid" column="Post_ID" type="Int32">
      <generator class="identity"/>
    </id>
    <property name="supname" column="Name" type="String"/>
    <property name="adress" column="Adress" type="String"/>
    <property name="phone" column="Phone" type="String"/>
  </class>
  <class name="PrivilegedUser" table="users">
    <id name="userid" column="user_id" type="Int32">
      <generator class="identity"/>
    </id>
    <property name="userLogin" column="login" type="String"/>
    <property name="userPass" column="password" type="String"/>
  </class>
</hibernate-mapping>



hibernate.cfg.xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<?xml version='1.0' encoding='utf-8' ?>
  <hibernate-configuration>
    <session-factory xmlns="urn:nhibernate-configuration-2.2">
      <property name="connection.provider">
        NHibernate.Connection.DriverConnectionProvider
      </property>
      <property name="connection.driver_class">
        NHibernate.Driver.MySqlDataDriver
      </property>
      <property name="dialect">
        NHibernate.Dialect.MySQLDialect
      </property>
      <property name="connection.connection_string">
        Server=localhost;Database=Pirotek;User ID=root;Password=root;Pooling=false
      </property>
      <mapping resource="library.hbm.xml" assembly="Lab_KPT4" />
    </session-factory>
  </hibernate-configuration>



И файл, где создается фабрика сессий (Transport.cs)
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
using System;
using System.Web;
using NHibernate;
using NHibernate.Cfg;

namespace Lab_KPT4
{
    public class Transport
    {
        private const string CurrentSessionKey = "nhibernate.current_session";
        private static readonly ISessionFactory sessionFactory;

        static Transport()
        {
            sessionFactory = new Configuration().Configure()
              .AddFile("hibernate.cfg.hml").BuildSessionFactory();
        }

        public static ISession GetCurrentSession()
        {
            HttpContext context = HttpContext.Current;
            ISession currentSession;
            if (context == null)
            {
                currentSession = sessionFactory.OpenSession();
            }
            else
            {
                currentSession = context.Items[CurrentSessionKey] as ISession;
                if (currentSession == null)
                {
                    currentSession = sessionFactory.OpenSession();
                    context.Items[CurrentSessionKey] = currentSession;
                }
            }
            return currentSession;
        }

        public static void CloseSession()
        {
            HttpContext context = HttpContext.Current;
            if (context == null)
            {
                return;
            }
            ISession currentSession = context.Items[CurrentSessionKey] as ISession;
            if (currentSession == null)
            {
                // No current session
                return;
            }
            currentSession.Close();
            context.Items.Remove(CurrentSessionKey);
        }

        public static void CloseSessionFactory()
        {
            if (sessionFactory != null)
            {
                sessionFactory.Close();
            }
        }
    }
}



Все файлы находятся в директории проекта: .../Projects/Lab_KPT4/Lab_KPT4

Помогите, пожалуйста: я так и не могу понять, в чем проблема, куда и как мне положить эти файлы (ну или где в них ошибка).
...
Рейтинг: 0 / 0
NHbernate: config-файлы
    #38613630
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валисий,

правой кнопкоа на library.hbm.xml, и поставтьте compile action = embedded resource
...
Рейтинг: 0 / 0
NHbernate: config-файлы
    #38613853
Валисий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я поставил "Встроенный ресурс", но дело было не в этом. Проблема уже решена, спасибо.
Сейчас другая проблема: как обновить данные? У меня есть класс Tovar, есть на главной странице GridView, куда я запихиваю данные, которые получаю из БД. Для GridView я разрешил правку и удаление. Как мне сделать сохранение изменений в БД?
session.Update() я не понимаю как использовать (не понимаю, что ему передать в качестве параметра).
...
Рейтинг: 0 / 0
NHbernate: config-файлы
    #38614061
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валисий,

для начала было бы неплохо понять, что такое вообще NHibernate, и как он работает. Для начала можно в книге почитать.
...
Рейтинг: 0 / 0
NHbernate: config-файлы
    #38614763
Валисий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, почитал. С NHibernate работаю в первый раз, до этого работал с Java (Hibernate).
Разобрался, что надо передавать в качестве параметра. А как обновить? У меня следующий код:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
        protected void TaskGridView_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            
            GridViewRow row = tgv.Rows[e.RowIndex];
            ISession session = Transport.GetCurrentSession();
            ITransaction tx = session.BeginTransaction();
            Tovar t = session.Get<Tovar>(Convert.ToInt32(row.Cells[0].Text)); 
            TextBox tb = row.Cells[1].FindControl("editName") as TextBox;
            t.tname = tb.Text;
            session.Update(t);
            tx.Commit();
            session.Flush();
            Transport.CloseSession();
            tgv.EditIndex = -1;
            tgv.DataBind();
            
        }


Не работает. Ошибок не выводит, но изменения не сохраняются. Редактируемый столбец у меня TemplateField, там же в EditItemTemplate есть текстбокс с ID=editName. Ничего не получается. Причем, если поставить t.tname = "string", то все ОК. В чем дело?
Я так понимаю, что я неправильно читаю значение из текстбокса (может быть, невовремя, или не та функция-обработчик). Ошибка здесь? Если да, как ее решить?
...
Рейтинг: 0 / 0
NHbernate: config-файлы
    #38614832
Валисий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тут что-то непонятное происходит... Выловить значение текстбокса он может, а вот записать в базу новое - нет. То есть, я нажимаю "правка", правлю что-то в текстбоксе, нажимаю "сохранить" - и он сохраняет старое значение. Как мне вытащить новое?
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NHbernate: config-файлы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]