我正在將一些代碼從Nhibernate 2.x轉換爲3.0。之前,我使用LINQ插件來獲得LINQ支持。我的理解是,在3.0版本中,它作爲一流的功能被推出。所以我的問題是,我曾經有這樣的:Nhibernate 3&LINQ
return new List<T>(session.Linq<T>().Where(where));
這對於新語法來說是什麼樣的?我經歷了nhib 3文檔和教程,並沒有看到任何關於linq的東西,所以我找不到後來模式化的例子。
我正在將一些代碼從Nhibernate 2.x轉換爲3.0。之前,我使用LINQ插件來獲得LINQ支持。我的理解是,在3.0版本中,它作爲一流的功能被推出。所以我的問題是,我曾經有這樣的:Nhibernate 3&LINQ
return new List<T>(session.Linq<T>().Where(where));
這對於新語法來說是什麼樣的?我經歷了nhib 3文檔和教程,並沒有看到任何關於linq的東西,所以我找不到後來模式化的例子。
在NHibernate的3使用LINQ你這樣做:
from u in session.Query<User>()
where u.Username == username
select u
或者
session.Query<User>().Where(u => u.Username == username)
不知道這是你在找什麼。
編輯:Query<T>
是一種擴展方法。不要忘記添加using NHibernate.Linq
以便能夠使用它。
沒有新的語法。 Linq仍然是linq。舊提供程序中名爲Linq的方法在新的提供程序中名爲Query。
您可以使用enumerable.ToList()來防止使用單獨的sql查詢加載列表中的每個對象,而不是使用新的List(enumerable)。
爲什麼不寫'return session.Linq().Where(where).ToList()`而不是? –
2011-02-22 21:13:46
是的,修正了這個問題。舊代碼。 – 2011-02-22 22:44:15