2010-06-16 2 views

ответ

1

Я говорю да. Если вы знаете формат отображения NHibernate, основанный на XML, гораздо легче отслеживать ошибки с помощью бедных NH's [FluentMappingsContainer].ExportTo([e.g. Environment.CurrentDirectory]).

Edit: пример ASP.NET MVC ж/StructureMap

StructureMap:

private static void ConfigureSQLiteInMemoryTest(IInitializationExpression init) 
     { 
      init.For<ISessionFactory>() 
       .Singleton() 
       .Use(Fluently.Configure() 
          .Database(SQLiteConfiguration.Standard.InMemory().AdoNetBatchSize(100).ShowSql) 
          .Mappings(m => m.FluentMappings.AddFromAssemblyOf<MyEntity>()) 
          .ExposeConfiguration(config => 
                { 
                 config.SetProperty(NHEnvironment.ProxyFactoryFactoryClass, 
                      typeof(ProxyFactoryFactory).AssemblyQualifiedName); 

                }) 
          .BuildSessionFactory()); 

      init.For<ISession>() 
       .LifecycleIs(GetLifecycle()) 
       .Use(context => 
          { 
           var session = context.GetInstance<ISessionFactory>().OpenSession(); 

           new TestData(session, _nhConfig).Create(); 

           return session; 
          }); 
     } 

Скажите MVC использовать StructureMap на базе контроллера завода:

Global.asax.cs:

protected void Application_Start() 
     { 
      [...] 

      var controllerFactory = new StructureMapControllerFactory(ObjectFactory.Container); 

      ControllerBuilder.Current.SetControllerFactory(controllerFactory); 

      [...] 

     } 

public class StructureMapControllerFactory : DefaultControllerFactory 
    { 
     private readonly IContainer _container; 

     public StructureMapControllerFactory(IContainer container) 
     { 
      _container = container; 
     } 

     protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType) 
     { 
      if (controllerType == null) 
       return null; 

      return (IController)_container.GetInstance(controllerType); 
     } 
    } 
+0

Можете ли вы дать мне пример того, как настроить свободно nhibernate с помощью asp.net mvc ... –

+0

Могу ли я использовать это для базы данных mysql вместо sqllite .. Что мне делать? –

+0

Думаю, вы можете. Я использовал только NH w/SQLite, SQLS и Oracle. Попробуйте изменить параметр метода Database (...) на тот, который определяет MySql. –

1

конечно, Fluent NHibernate в основном там, чтобы сделать отображение проще (и типобезопасен)

+0

Можете ли вы дать мне пример того, как настроить свободно nhibernate с помощью asp.net mvc ... –

0

Пробуйте ответ на этот вопрос для учебных пособий

Where can i find a Fluent NHibernate Tutorial?

Это имеет смысл, чтобы иметь представление о NHibernate, прежде чем научиться свободно NHibernate. Поскольку @Jaguar говорит, что он сидит на вершине nhibernate.

Возможно, стоит посмотреть на nhlambdaextensions.googlecode.com - хотя это будет включено в следующую версию!

Для NHibernate учебники проверить dimecasts или tekpub - или nhibernate.info - см вопрос

Learning NHibernate

NHibernate является база данных агностик. :)

2

Вы абсолютно необходимо, чтобы узнать NHibernate. Fluent NHibernate - это только оболочка над API-интерфейсом NHBernate API, а отображение - лишь небольшая часть работы с NHibernate.

Запросы (критерии/HQL/LINQ), сеансы, блокировка, ленивая загрузка и т. Д. - это концепции, которые вы должны знать при работе с NHibernate и не имеющие ничего общего с Fluent NHibernate.

1

ДА!

Вы потеряете полностью, если не поймете, по крайней мере, основы NHibernate. NHibernate - сложный инструмент, и беглый NHibernate действительно делает работу с ним более удобной - она ​​не скрывает сложности.

Смежные вопросы