2011-01-07 32 views
7

Ok, tôi nghĩ rằng tôi có tất cả các cấu hình của mình ngay bây giờ và bây giờ tôi chỉ đang cố thực hiện một truy vấn chọn từ cơ sở dữ liệu chọn một số dữ liệu. Bây giờ tôi đang sử dụng NHibernate 3,0 mà tôi mặc dù hỗ trợ mặc định LINQ (hoặc ít nhất là một phần của liên kết. Bây giờ mỗi ví dụ LINQ tôi thấy có mã nàySử dụng LINQ với NHibernate

session.Linq<User>() 

nhưng tôi cho cuộc sống của tôi không thể tìm thấy Đây có phải là lý do tại sao làm trong 3.0 và nếu như vậy làm thế nào để tôi thiết lập phiên (những gì usings tôi cần, lớp học, phương pháp, vv ...)? Nếu không, những gì là thích hợp cách sử dụng LINQ với NHibernate 3,0

UPDATE:?

Bây giờ tôi có đoạn mã sau:

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

nhưng tôi nhận được lỗi trình biên dịch nói rằng NHibernate.ISession không có định nghĩa cho LINQ. Tôi có các hoạt động sau:

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

Tôi có thiếu gì đó không?

+1

Tôi tin rằng đó là 'session.Query () ' trong NHibernate 3 là nhà cung cấp LINQ đã được đưa vào lắp ráp lõi –

+0

wiki NHibernate là một nguồn tài nguyên tốt để bắt đầu - http://nhforge.org/wikis/howtonh/your-first-nhibernate-based-application.aspx –

Trả lời

8

Bạn cần phải nhập không gian tên:

using NHibernate.Linq; 

Ngoài ra, nó bây giờ:

session.Query<TEntity>(); 

thay vì:

// Deprecated 
session.Linq<TEntity>(); 
+0

Có, tôi đã tìm ra rằng tôi cần sử dụng .Query thay vì .Linq cho NHibernate 3, Cảm ơn – ryanzec

2

Bạn nhận phiên từ phương thức NHibernate SessionFactory.CreateSession(). Khi đã có, bạn có thể sử dụng truy vấn HQL, API truy vấn NH hoặc LINQ để truy cập dữ liệu.

Các vấn đề liên quan