Можно ли преобразовать:.Преобразование этого метода из IList в IQueryable
общественного IList Получить() { возвращение Session.CreateCriteria (TypeOf (T)) List(); }
для возврата IQueryable?
В чем разница между IList и IQueryable?
Можно ли преобразовать:.Преобразование этого метода из IList в IQueryable
общественного IList Получить() { возвращение Session.CreateCriteria (TypeOf (T)) List(); }
для возврата IQueryable?
В чем разница между IList и IQueryable?
Одним из наиболее важных аспектов при анализе SQL и Linq является то, что возврат IList означает, что запрос выполнен. Возвращение IQueryable продолжает открывать возможность отложить выполнение sql позже (так что вы могли бы потенциально построить запрос вне этого метода).
Однако это было бы только в случае NHibernate при использовании провайдера Linq to NHibernate. API Критерии не Linqified для операторов SQL. Так реалистично в этом случае возвращение IList или IQueryable не имеет существенной разницы.
Что такое возможно, чтобы возвращать IEnumerable так:
public IEnumerable<T> Get()
{
return Session.CreateCriteria(typeof(T)).Future<T>();
}
Таким образом, вы можете сделать отложенное выполнение, как вы делаете с Linq для SQL.
Для получения дополнительной информации о будущем метода Престола:
http://ayende.com/Blog/archive/2009/04/27/nhibernate-futures.aspx
Вы также можете имитировать IQueryable, возвращая интерфейс ICriteria вместо IList:
public ICriteria<T> Get()
{
return Session.CreateCriteria(typeof(T));
}
Таким образом, вы можете начать создавая запрос вне вашего метода и, наконец, выполняйте его, когда захотите.
Не совсем верно. Будущее
Тем не менее, вы всегда должны использовать Future with Criteria, когда это возможно, нет причин не использовать его. Просто не ожидайте от Linq для SQL-функций от него –
Мне придется не согласиться с вами на этом. Цель Future
Что возвращает CreateCriteria? список или запрос? – Radu094
«В чем разница между IList и IQueryable», можно найти его. http://stackoverflow.com/search?q=What+is+the+difference+between+IList+and+IQueryable%3F – IEnumerator
Вы используете NHibernate Linq? Я считаю, что последние бит позволяют преобразовать оператор Criteria в Linq. – Min