我是NHibernate的新手......
我一直在关注Gabriel Schenker的NHibernate教程: http://nhforge.org/wikis/howtonh/your-first-nhibernate-based-application.aspx
但是,本教程使用hbm文件。我想知道 - 我需要做些什么来修改下面的hepler类(创建一个会话工厂),以便它使用我的ClassMap文件而不是hbm?
此外,这是处理工厂创建的最佳方式吗?在这个例子中创建工厂的频率是多少 - 每次请求一次? (在这种情况下,我不确定我理解_sessionFactory的生命周期。)
谢谢!
public class NHibernateHelper
{
private static ISessionFactory _sessionFactory;
private static ISessionFactory SessionFactory
{
get
{
if(_sessionFactory == null)
{
var configuration = new Configuration();
configuration.Configure();
configuration.AddAssembly(typeof(Product).Assembly);
_sessionFactory = configuration.BuildSessionFactory();
}
return _sessionFactory;
}
}
public static ISession OpenSession()
{
return SessionFactory.OpenSession();
}
}
答案 0 :(得分:0)
会话工厂通常只应在应用的生命周期内创建一次(使用singleton模式)。
以下是使用Fluent Nhibernate创建SessionFactory的示例代码:
var mssqlConfig = MsSqlConfiguration
.MsSql2008
.ConnectionString(c => c.Is(connectionstring))
.UseOuterJoin()
.ProxyFactoryFactory("NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle");
var sessionFactory = Fluently.Configure()
.Database(mssqlConfig)
.Mappings(m => m.FluentMappings.AddFromAssembly(typeof(Product).Assembly))
.BuildSessionFactory();
不使用Fluent Config(从我的头脑中,语法可能不准确):
var config = new NHibernate.Cfg.Configuration().Configure();
var model = new PersistenceModel();
model.Configure(config);
model.AddMappingsFromAssembly(typeof(Product).Assembly);
var sessionFactory = config.BuildSessionFactory();