Гость
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / ICriteria инициирует update / 8 сообщений из 8, страница 1 из 1
20.12.2011, 22:18
    #37585888
kmaw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ICriteria инициирует update
Код: c#
1.
2.
3.
4.
5.
6.
ICriteria crit = session.CreateCriteria(p.GetType());
crit.Add(Expression.Eq("Name", p.Name)).
Add(Expression.Not(Expression.Eq("Id", p.Id)));

if (crit.List().Count > 0) //и тут падаем с ексепшн, так как вызывается update, который нарушает UK в БД
...



вроде как ICriteria - это селект?
...
Рейтинг: 0 / 0
20.12.2011, 22:23
    #37585892
kmaw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ICriteria инициирует update
причем ни

Код: c#
1.
session.SaveOrUpdate(p);



ни

Код: c#
1.
transaction.Commit();



не вызывается - код проверил. Что я упустил?

спасибо
...
Рейтинг: 0 / 0
21.12.2011, 00:04
    #37585969
SolYUtor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ICriteria инициирует update
kmaw,

Этот определённо не тот код, который вызывает update. Проблема где-то в другом месте.
...
Рейтинг: 0 / 0
21.12.2011, 20:06
    #37587695
kmaw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ICriteria инициирует update
SolYUtorkmaw,

Этот определённо не тот код, который вызывает update. Проблема где-то в другом месте.

на одном компе (XP SP3, Oracle Client 9i) все равно вызывается update,
на другом (w7, Oracle Client 11g) все работает нормально
...
Рейтинг: 0 / 0
21.12.2011, 20:08
    #37587698
kmaw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ICriteria инициирует update
в смысле я всего на двух компах тестил, а не на многих с перечисленными характеристиками
...
Рейтинг: 0 / 0
21.12.2011, 20:18
    #37587719
SolYUtor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ICriteria инициирует update
kmaw,

попробуем включить телепатию. У вас nullable поля в бд соответствуют маппингам? Может это ваш случай ?
...
Рейтинг: 0 / 0
22.12.2011, 09:21
    #37588265
kmaw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ICriteria инициирует update
SolYUtor,

с разными компами я прогнал.

но проблему, кажется, решил. я подумал:
1. с чего ради "в принципе" перед select может выполняться update?
2. как вариант, типа "поведение по-умолчанию", чтобы согласовать грязные данные на клиенте с БД

сделал
Код: c#
1.
session.Clear(); 




правильно ли?
...
Рейтинг: 0 / 0
22.12.2011, 10:06
    #37588323
SolYUtor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ICriteria инициирует update
kmawправильно ли?
It depends...

ICriteria может вызывать update, т.к. NHibernate будет пытаться синхронизировать состояние объектов с бд, если изменения объектов в сессии могут оказать влияние на результаты запроса. Поэтому возможно в вашем случае session.Clear() и можно использовать, но мне сложно об этом судить не зная контекста. Но я бы попробовал пересмотреть принципа работы с ISession.
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / ICriteria инициирует update / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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