ryanzec
ryanzec

Reputation: 28060

Using LINQ with NHibernate

Ok, I think I have all my configurations right and now I am just trying to do a select query from the database selecting some data. Now I am using NHibernate 3.0 which I though by default support LINQ (or at least a good portion of link. Now every LINQ example I find has this code

session.Linq<User>()

but I for the life of me can't find how or where session is being set. Is this that proper why of doing in in 3.0 and if so how do I set sessions (what usings do I need, classes, methods, etc...)? If not, what is the proper way of using LINQ with NHibernate 3.0?

UPDATE:

Now I have the following code:

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

but I get a compiler error saying that NHibernate.ISession does not have a definition for Linq. I have the follow usings:

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

Am I missing something?

Upvotes: 7

Views: 6471

Answers (2)

codekaizen
codekaizen

Reputation: 27439

You need to import the namespace:

using NHibernate.Linq;

Also, it's now:

session.Query<TEntity>();

instead of:

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

Upvotes: 8

Neil Barnwell
Neil Barnwell

Reputation: 42165

You get a session from the NHibernate SessionFactory.CreateSession() method. Once you have one, you can then use either HQL queries, the NH query API or LINQ to access the data.

Upvotes: 2

Related Questions