Linq для NHibernate с использованием предиката Queryable.Where - PullRequest
1 голос
/ 02 мая 2010

Я запрашиваю базу данных SQLite, используя LINQ to NHibernate.

Person - это объект, содержащий идентификатор и имя:

public class Person
{
    public Guid Id { get; private set; }
    public string Name { get; private set; }
}

Допустим, моя таблица БД содержит одного человека по имени " Джон ".

Этот тест работает как ожидалось:

var query = from item in session.Linq<Person>()
            where (item.Name == "Mike")
            select item;

// no such entity should exist
Assert.IsFalse(query.Any());

но этот провал:

var query = from item in session.Linq<Person>()
            select item;
query.Where(item => item.Name == "Mike");

// following line actually returns the
// "John" entry
Assert.IsFalse(query.Any());

Чего мне не хватает?

1 Ответ

3 голосов
/ 02 мая 2010

Вызов Where не меняет существующий запрос, он создает новый. Вам нужно присвоить что-то, если вы хотите использовать новый запрос.

var query2 = query.Where(item => item.Name == "Mike");
...