powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NHibernate как получить объект по имени?
8 сообщений из 8, страница 1 из 1
NHibernate как получить объект по имени?
    #37665764
Фотография OracleLover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здраствуйте,

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

По ID это делается через Get<Entity>(id)

По имени я делаю через CreateCriteria
Код: c#
1.
session.CreateCriteria(typeof(TUser)).List<TUser>().FirstOrDefault(u => u.Name == model.UserName);



Что как-то не очень мне нравится. В сети везде уже примеры достаточно сложных запросов через Restrictions like\or\Gt и т.д с сортировкой и без. А как просто добавить критерий найти объект по значению - т.е просто "="?
...
Рейтинг: 0 / 0
NHibernate как получить объект по имени?
    #37665807
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OracleLover
Код: c#
1.
session.CreateCriteria(typeof(TUser)).List<TUser>().FirstOrDefault(u => u.Name == model.UserName);


Офигеть. Аналогичные грабли в вашем исполнении , только для EF. Позвольте угадаю, это запрос еще и выполняется долго, да?

Используйте QueryOver Api:
Код: c#
1.
session.QueryOver<TUser>().FirstOrDefault(u => u.Name == model.UserName)
...
Рейтинг: 0 / 0
NHibernate как получить объект по имени?
    #37665822
Фотография OracleLover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolYUtor,

Что-то ваш код невалиден, как впрочем и комментарии относительно EF - там вообще-то другая проблема была. Будьте внимательнее.
...
Рейтинг: 0 / 0
NHibernate как получить объект по имени?
    #37665848
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OracleLover,

1. Код писал в браузере. Правильный вариант выглядит так:
Код: c#
1.
session.QueryOver<User>().Where(u => u.Name == model.UserName).SingleOrDefault();



2. Тему с EF вы слили, не представив доказательств. Что сейчас, что тогда вы тащите всю таблицу на клиента, чтобы взять одну запись. Это впечатляет!
...
Рейтинг: 0 / 0
NHibernate как получить объект по имени?
    #37665855
Фотография OracleLover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolYUtorOracleLover,

1. Код писал в браузере. Правильный вариант выглядит так:
Код: c#
1.
session.QueryOver<User>().Where(u => u.Name == model.UserName).SingleOrDefault();



2. Тему с EF вы слили, не представив доказательств. Что сейчас, что тогда вы тащите всю таблицу на клиента, чтобы взять одну запись. Это впечатляет!

За код спасибо.
Та тема не закрыта - заходите, продолжайте, выслушаю ваши доводы как делать правильно.
...
Рейтинг: 0 / 0
NHibernate как получить объект по имени?
    #37665905
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OracleLover,
Знакомство с орм,
1 Подключаем лог, и смотрим какие движения генерит орм.
2 Смотрим лог на все наши действия.
3 Анализируем лог.
зы а в общем то вам уже ответили..
...
Рейтинг: 0 / 0
NHibernate как получить объект по имени?
    #37666597
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OracleLover,

Доводы растут корнями из Fallacies of Distributed Computing . Собственно, из них вытекает два вывода:
1. Надо сокращать количество межпроцессных вызовов (в нашем случае обращений к БД).
2. Надо сокращать объём передаваемых по сети данных.

Идеальный вариант вытащить всё необходимое за один запрос. Но только необходимое. А вы тащите на клиент всю таблицу, и берёте из нее одну запись. Кроме проблем передачи по сети еще рискуете огрести от проблем конкурентного доступа.
...
Рейтинг: 0 / 0
NHibernate как получить объект по имени?
    #37718770
besserebrenik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oracle Lover, скачайте NHibernate Profiller (триал 30 дней). Вы действительно тащите всю таблицу кодом из первого сообщения.
Если у вас "не работает" QueryOver<T>, то возможно вам стоит попробовать Query<T> или Linq<T>
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NHibernate как получить объект по имени?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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