Должен ли я заботиться / иметь знания о nHibernate перед выбором Fluent nHibernate? - PullRequest
0 голосов
/ 16 июня 2010

Я просматривал Fluent nhibernate wiki и знаю, что Fluent nhibernate построен поверх nHibernate ... Должен ли я заботиться о знаниях nHibernate до того, как выбрать Fluent nHibernate?Любое предложение ...

Ответы [ 5 ]

2 голосов
/ 17 июня 2010

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

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

1 голос
/ 05 августа 2010

ДА!

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

1 голос
/ 16 июня 2010

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

Редактировать: пример 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 );
        }
    }
1 голос
/ 16 июня 2010

конечно, свободный nhibernate в основном там, чтобы упростить отображение (и печатать безопасно)

0 голосов
/ 16 июня 2010

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

Где я могу найти бесплатный учебник по NHibernate?

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

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

Для учебных пособий по Nhibernate посмотрите dimecasts или tekpub - или nhibernate.info - см. Вопрос

Обучение NHibernate

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...