nhibernate создание запроса по критерию
От: yozhik89 Украина  
Дата: 04.06.09 12:01
Оценка:
Здраствуйте! Перейду сразу к делу: как создать запрос по определенному критерию с использованием NHibernate и БД SQL?
Например у меня есть класс Customer. Так вот, я хочу, например, извлеч из БД Customers все города у которых поле City "Лондон"?
Я писал вот так, но выдает ошибку. Использую Visual Studio 2008 и SQL Server Express 2005.

            IList<Customer> a = ses2.CreateQuery("SELECT * FROM dbo.Customers").List<Customer>();
            ICriteria crit = ses2.CreateCriteria(typeof(Customer))
                .Add(Expression.Eq("Customers.City", "London"));
            IList<Customer> aa = crit.List<Customer>();
Извинити за мой русский:)
Re: nhibernate создание запроса по критерию
От: Ziaw Россия  
Дата: 04.06.09 12:23
Оценка: 2 (2)
Здравствуйте, yozhik89, Вы писали:

Y>Я писал вот так, но выдает ошибку. Использую Visual Studio 2008 и SQL Server Express 2005.


Ошибку зря не приводите, сами-то читали? Она может быть не в коде, но в коде тоже есть.
Y>
Y>            IList<Customer> a = ses2.CreateQuery("from Customer").List<Customer>(); // это HQL
Y>            ICriteria crit = ses2.CreateCriteria(typeof(Customer))
Y>                .Add(Expression.Eq("City", "London")); // что это свойство кастомера он сам догадается
Y>            IList<Customer> aa = crit.List<Customer>();
Y>
... << RSDN@Home 1.2.0 alpha 4 rev. 1176>>
Re[2]: nhibernate создание запроса по критерию
От: yozhik89 Украина  
Дата: 04.06.09 17:59
Оценка:
Здравствуйте, Ziaw, спасибо за помощь, но к сожалению у меня етот пример не работает тоже.
Вы писали:

Y>>
Y>>            IList<Customer> a = ses2.CreateQuery("from Customer").List<Customer>(); // это HQL
Y>>            ICriteria crit = ses2.CreateCriteria(typeof(Customer))
Y>>                .Add(Expression.Eq("City", "London")); // что это свойство кастомера он сам догадается
Y>>            IList<Customer> aa = crit.List<Customer>();
Y>>


так вот на

.Add(Expression.Eq("City", "London"));

компилятор выдает такую ошибку:

Error 1 The name 'Expression' does not exist in the current context


но референс на NHibernate я добавил в проект и
using NHibernate

тоже добавил, но, как я понял, дело в том, что у меня просто нет вот такой функции: Expression.Eq("City", "London"));
Я долго бился и искал и вот тепер понял — вот решение етой проблемы:


            NHibernate.Expression.EqExpression eq = new NHibernate.Expression.EqExpression("Region", "SP"); //обьявляем критерий, который будем добавлять

            ICriteria cr = ses2.CreateCriteria(typeof(Customer)); //тип нашего класса
            cr.Add(eq);                                         //добавляем созданый критерий eq
            IList<Customer> aa = cr.List<Customer>(); // возвращяем список найденых записей, где поле Customer.Region имеет значение "SP"
            foreach (Customer cust in aa)
            {
                Console.WriteLine(cust.Region + "  " + cust.CompanyName);  //выводим все ето на екран для очистки совести:))
            }


Просто видимо у меня новая версия енхибернейт и пришлось вот так повозится. Надеюсь кому то пригодится мое решение.
Извинити за мой русский:)
Re[3]: nhibernate создание запроса по критерию
От: Ахмед  
Дата: 05.06.09 07:48
Оценка: +1 :)
Здравствуйте, yozhik89, Вы писали:

Y>Просто видимо у меня новая версия енхибернейт и пришлось вот так повозится. Надеюсь кому то пригодится мое решение.


Вряд ли... Попробуй просто добавит using NHibernate.Criterion;
Re[4]: nhibernate создание запроса по критерию
От: yozhik89 Украина  
Дата: 05.06.09 09:20
Оценка:
Здравствуйте, Ахмед. У меня такого неймспейса нет, хз
Извинити за мой русский:)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.