2009-09-03 1 views
0

Я новичок в NHibernate ...NHibernate вопросы - модифицирующие этот пример Fluent NHibernate

Я после этого NHibernate Tutorial от Gabriel Schenker: 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

Session завод обычно должен быть создан только один раз (используя singleton рисунок) для жизни приложения.

А вот пример кода для создания SessionFactory с Fluent NHibernate:

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(); 
+0

спасибо - Если я хочу сохранить конфигурацию в файле hibernate.cfg.xml, но просто используйте Fluent для сопоставления - как бы я это сделал в вашем коде? – UpTheCreek

+0

обновил ответ, синтаксис может быть не точным, у меня нет моей IDE передо мной – mxmissile