2011-01-07 38 views
7

好吧,我想我的所有配置都是正確的,現在我只是試圖從數據庫中選擇一些數據進行選擇查詢。現在我使用NHibernate 3.0,我雖然在默認情況下支持LINQ(或者至少鏈接的很大一部分。現在每LINQ的例子,我覺得有這個代碼在NHibernate中使用LINQ

session.Linq<User>() 

,但我爲我的生活不能找到如何設置會話的位置或者會話的位置是什麼?這是3.0中的正確原因嗎?如果是這樣,我該如何設置會話(我需要什麼樣的用法,類,方法等等)?如果不是,那麼什麼是合適的使用LINQ與NHibernate 3.0的方式

UPDATE:

現在我有以下代碼:

var configuration = new Configuration(); 
configuration.Configure(); 
configuration.AddAssembly(typeof(Tag).Assembly); 
var sessionFactory = configuration.BuildSessionFactory(); 
var session = sessionFactory.GetCurrentSession(); 

但我得到一個編譯器錯誤,說NHibernate.ISession沒有Linq的定義。我有以下使用:

using System.Collections.Generic; 
using System.Web.Mvc; 
using MyProject.Models; 
using MyProject.ViewModels.Desktop; 
using NHibernate.Cfg; 

我錯過了什麼嗎?

+1

我相信這是`session.Query ()`在NHibernate 3中將LINQ提供者帶入核心程序集 – 2011-01-07 00:25:45

+0

NHibernate wiki是一個很好的資源爲開始 - http://nhforge.org/wikis/howtonh/your-first-nhibernate-based-application.aspx – 2011-01-07 00:27:21

回答

8

您需要導入命名空間:

using NHibernate.Linq; 

而且,它現在:

session.Query<TEntity>(); 

代替:

// Deprecated 
session.Linq<TEntity>(); 
2

您從NHibernate SessionFactory.CreateSession()方法獲得會話。一旦有了,您就可以使用HQL查詢,NH查詢API或LINQ來訪問數據。

相關問題