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);  //выводим все ето на екран для очистки совести:))
            }


Просто видимо у меня новая версия енхибернейт и пришлось вот так повозится. Надеюсь кому то пригодится мое решение.
Извинити за мой русский:)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.