powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Data Access Layer для Firebird 2.0
25 сообщений из 32, страница 1 из 2
Data Access Layer для Firebird 2.0
    #34671854
Фотография webus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто делал ? Может есть что готовое интересное. Пытаюсь написать сам, но хотелось бы оттлкиватся от готовых примеров. Требуется сделать абстракцию на уровне бизнес-объектов.
...
Рейтинг: 0 / 0
Data Access Layer для Firebird 2.0
    #34672162
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NHibernate умеет.
...
Рейтинг: 0 / 0
Data Access Layer для Firebird 2.0
    #34674969
Фотография webus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НахлобучNHibernate умеет.

Посмотрел в его сторону. Как то не впечатлил. Нашел NEO Framework для Firebird. Но документации
на русском вообще нет. Хотя бы пример его использования. Штука мощная, хочется использовать.
Может кто уже юзал ? Киньте пример. Буду признателен.
...
Рейтинг: 0 / 0
Data Access Layer для Firebird 2.0
    #34675179
Фотография webus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто что скажет про NEO ?
http://]http://neo.codehaus.org
...
Рейтинг: 0 / 0
Data Access Layer для Firebird 2.0
    #34675228
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
webusПосмотрел в его сторону. Как то не впечатлил. Нашел NEO Framework для Firebird. Но документации
на русском вообще нет. Хотя бы пример его использования. Штука мощная, хочется использовать.
Может кто уже юзал ? Киньте пример. Буду признателен.
Однако... Вы действительно считаете, что NEO мощнее NHibernate?
...
Рейтинг: 0 / 0
Data Access Layer для Firebird 2.0
    #34675847
Фотография webus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не считаю,хочу понять суть нео
...
Рейтинг: 0 / 0
Data Access Layer для Firebird 2.0
    #34675862
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
webusНе считаю,хочу понять суть нео
Из того, что я понял -- это попытка очеловечить идею DataSet'ов со всеми вытекающими из этого проблемами. Для небольших проектов, скорее всего, самое оно. Но небольшие проекты часто вырастают в большие, а уже в них начнутся проблемы.
...
Рейтинг: 0 / 0
Data Access Layer для Firebird 2.0
    #34700657
Фотография konstsch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а чем DAL для Fb отличается от других ?
может DDEX поможет
...
Рейтинг: 0 / 0
Data Access Layer для Firebird 2.0
    #34701811
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
konstschа чем DAL для Fb отличается от других ?
может DDEX поможет
дык причем тут, человеку нужен как я понимаю ORM, а DDEX просто типизированные датасеты клепает
...
Рейтинг: 0 / 0
Data Access Layer для Firebird 2.0
    #34741808
Фотография webus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да мне нужен ORM. Пробовал BLToolkit, CSLA, NHibernate (так и не понял).
Первые 2 работают с fb только с запросами, когда работешь с хранимыми процедурами, вылетают ошибки
...
Рейтинг: 0 / 0
Data Access Layer для Firebird 2.0
    #34745971
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
webus
NHibernate (так и не понял).

что непонятно?

Код: plaintext
 uid  =  S a

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Data Access Layer для Firebird 2.0
    #34772932
Фотография konstsch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
webusNHibernate (так и не понял).
вот блин я просидел два выходных только и сделал что смог запустить несколько демок.
...
Рейтинг: 0 / 0
Data Access Layer для Firebird 2.0
    #34773009
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
konstschвот блин я просидел два выходных только и сделал что смог запустить несколько демок.
Где ж вы там сложности-то нашли? Она ж изначально простая аки двери -- все тонкости и детали поздней.
...
Рейтинг: 0 / 0
Data Access Layer для Firebird 2.0
    #34779843
Фотография webus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sa
webus
NHibernate (так и не понял).

что непонятно?

Код: plaintext
 uid  =  S a
Posted via ActualForum NNTP Server 1.4

В документации по NHibernate приводятся примеры для web-приложения, с множеством XML. Меня интересует реализация приложения WinForms. Сейчас пробую FireBird.SqlHelper.
...
Рейтинг: 0 / 0
Data Access Layer для Firebird 2.0
    #34782375
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
webus
В документации по NHibernate приводятся примеры для web-приложения, с множеством XML. Меня интересует реализация приложения WinForms.

Для winforms все также, и точно также множество XML-маппинг файлов.

Код: plaintext
 uid  =  S a

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Data Access Layer для Firebird 2.0
    #34782969
Фотография konstsch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот допустим из примера:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
public virtual void Save()
		{
			ISession session = NHibernateSessionManager.Instance.GetSession();
            if (!this.IsPersisted)
                session.Save(this);
            else
                session.SaveOrUpdateCopy(this);

			session.Flush();
		}

Как можно узнать что делается(какой запрос отправляется к SQL серверу) по session.Save(this);.
...
Рейтинг: 0 / 0
Data Access Layer для Firebird 2.0
    #34785882
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
konstsch
Как можно узнать что делается(какой запрос отправляется к SQL серверу) по session.Save(this);

скорее всего в вашем примере по Flush.

1) посмотреть профайлером (не знаю есть для Firebird или нет)
2) добавить в файл конфигурации (например hibernate.cfg):
[src xml]
<property name="show_sql">true</property>
[/src]тогда sql запросы будут выдаваться в output студии при debug
3) включить ведение логов log4net

Код: plaintext
 uid  =  S a

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Data Access Layer для Firebird 2.0
    #34786000
Фотография konstsch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторскорее всего в вашем примере по Flush.

1) посмотреть профайлером (не знаю есть для Firebird или нет)
2) добавить в файл конфигурации (например hibernate.cfg):
[src xml]
<property name="show_sql">true</property>
[/src]тогда sql запросы будут выдаваться в output студии при debug
3) включить ведение логов log4net

до Flush не доходит, выдает ошибку() на Save
oшибка: invalid request BLR at offset 78\r\ngenerator HIBERNATE_SEQUENCE is not defined

1. Нормального(в духе MSSQL) профайлера нет
2. Повидимому из-за того что до Flush не доходит, то и в Output пусто
3. попробую разобраться с ведением логов с помощью log4net
...
Рейтинг: 0 / 0
Data Access Layer для Firebird 2.0
    #34786092
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
konstsch
3. попробую разобраться с ведением логов с помощью log4net

да. подключайте логирование. там особо делать нечего . примеров по использованию log4net множество. настраивать nHibernate как то при этом не требуется.

Код: plaintext
 uid  =  S a

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Data Access Layer для Firebird 2.0
    #34786272
Фотография konstsch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На данный момент как видно по логам проблема с автоинкрементным полем(которое в ФБ делается с помощью генератора и тригера)

т.е. повидимому проблема здесь(в описание ID):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
	<class name="Business.Product,Business" table="PRODUCT" lazy="true">

		<id name="Id" column="PRODUCTID" type="Int32">
      <generator class="native" />
		</id>

    
    <property name="Name" column="NAME" type="String"/>
    <property name="Weight" column="WEIGHT" type="Int32"/>
  </class>
</hibernate-mapping>

DDL:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
CREATE TABLE PRODUCT (
    PRODUCTID  INTEGER NOT NULL,
    NAME       VARCHAR( 50 ) NOT NULL,
    WEIGHT     INTEGER
);



/* Trigger: PRODUCT_BI */
CREATE TRIGGER PRODUCT_BI FOR PRODUCT
ACTIVE BEFORE INSERT POSITION  0 
as
begin
    new.productid = gen_id(gen_product_id, 1 );
end

подскажите как поправить
...
Рейтинг: 0 / 0
Data Access Layer для Firebird 2.0
    #34786315
Фотография konstsch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ошибка происходит из за вызова nhibernate вот такой SQL конструкции:
log4netDEBUG 2007-09-08 11:36:18 [4] Building an IDbCommand object for the SqlString: select gen_id(hibernate_sequence, 1 ) from RDB$DATABASE

и даже после замены на:
<id name="Id" type="Int32" column="PRODUCTID" unsaved-value="0">
<generator class="sequence">
<param name="sequence">GEN_PRODUCT_ID</param>
</generator>
</id>

он всеравно пытается вызвать генератор hibernate_sequence

только после того как был создан этот генератор, то все заработало.
как можно избавиться от этого лишнего вызова?
...
Рейтинг: 0 / 0
Data Access Layer для Firebird 2.0
    #34786393
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А триггер вам зачем? какой вариант остался сейчас.

Код: plaintext
 uid  =  S a

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Data Access Layer для Firebird 2.0
    #34786431
Фотография konstsch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тригер нужен для имитации автоикрементного поля, в Fb нет identity.
на данный момент так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
	<class name="Business.Product,Business" table="PRODUCT" lazy="true">

      <id name="Id" type="Int32" column="PRODUCTID" unsaved-value="0">
          <generator class="sequence">
            <param name="sequence">GEN_PRODUCT_ID</param>
          </generator>
      </id>
    
    <property name="Name" column="NAME" type="String"/>
    <property name="Weight" column="WEIGHT" type="Int32"/>
  </class>
</hibernate-mapping>

DDL:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
CREATE GENERATOR GEN_PRODUCT_ID;

CREATE TABLE PRODUCT (
    PRODUCTID  INTEGER NOT NULL,
    NAME       VARCHAR( 50 ) NOT NULL,
    WEIGHT     INTEGER
);


/* Trigger: PRODUCT_BI */
CREATE TRIGGER PRODUCT_BI FOR PRODUCT
ACTIVE BEFORE INSERT POSITION  0 
as
begin
    new.productid = gen_id(gen_product_id, 1 );
end

плюс для того что бы хибернейт не ругался, для него генератор:
Код: plaintext
CREATE GENERATOR HIBERNATE_SEQUENCE;

повидимому результат этого генератора он хочет сам вместо триггера подставить в поле автоинкремента, но если он его и подставляет, то триггер его всеравно изменит
...
Рейтинг: 0 / 0
Data Access Layer для Firebird 2.0
    #34786543
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
konstsch
повидимому результат этого генератора он хочет сам вместо триггера подставить в поле автоинкремента, но если он его и подставляет, то триггер его всеравно изменит

насколько я понимаю, триггер сейчас не нужен. hibernate заботы по генерации должен взять на себя. хотя фигь его знает как там с Firebird 2.0

Код: plaintext
 uid  =  S a

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Data Access Layer для Firebird 2.0
    #34786623
Фотография konstsch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет триггер как раз нужен, т.к. хибернейт берет значение генератора из другого не из того генератора который я обозначаю в триггере.
Хибернейт берет значение из генератора: CREATE GENERATOR HIBERNATE_SEQUENCE, мне же нужен
GEN_PRODUCT_ID.
Без созданного генератора HIBERNATE_SEQUENCE хибернейт вообще отказывается сохранять запись.

Может можно как-то вообще что бы хибернейт не знал что есть генератор
Пробовал так

Код: plaintext
<generator class="identity"/>

и так

Код: plaintext
<generator class="increment"/>

и вот так

Код: plaintext
<generator class="assigned"/>

и так

Код: plaintext
<generator class="native"/>

и в любом случае что он отправляет запрос вида:
Код: plaintext
select gen_id(hibernate_sequence,  1  ) from RDB$DATABASE
на сервер


Sahibernate заботы по генерации должен взять на себя
Вот таких забот от хибернейта мне точно не нужно, все заботы по генерации первичного ключа должна взять БД и только она.
...
Рейтинг: 0 / 0
25 сообщений из 32, страница 1 из 2
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Data Access Layer для Firebird 2.0
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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