代码之家  ›  专栏  ›  技术社区  ›  ACP

在选择流利的nhibernate之前,我应该关心/了解nhibernate吗?

  •  0
  • ACP  · 技术社区  · 14 年前

    我在浏览一个流利的NHibernate wiki,我知道 Fluent nhibernate 是建在 nHibernate …在选择流利的nhibernate之前,我应该关心/了解nhibernate吗?任何建议…

    5 回复  |  直到 7 年前
        1
  •  1
  •   Martin R-L    14 年前

    我说是的。如果您知道nhibernate基于XML的映射格式,那么通过fluent nh可以更容易地跟踪错误。 [FluentMappingsContainer].ExportTo([e.g. Environment.CurrentDirectory]) .

    编辑:ASP.NET MVC示例w/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使用基于结构映射的控制器工厂:

    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 );
            }
        }
    
        2
  •  2
  •   Mauricio Scheffer    14 年前

    绝对需要 学习氨气。Fluent NHibernate只是NHibernate的包装纸 映射 API和映射只是使用NHibernate的一小部分。

    查询(criteria/hql/linq)、会话、锁定、懒惰/急迫加载等概念是在使用nhibernate时必须知道的,与流畅的nhibernate无关。

        3
  •  1
  •   Jaguar    14 年前

    当然,fluent nhibernate主要是为了使映射更简单(和类型安全)

        4
  •  1
  •   UpTheCreek    14 年前

    对!

    如果你不了解NHibernate的基本知识,你会完全迷路的。nhibernate是一个复杂的工具,流畅的nhibernate只会让使用它更加方便——它不会隐藏复杂性。

        5
  •  0
  •   Community Egal    7 年前

    尝试此问题的答案作为教程

    Where can i find a Fluent NHibernate Tutorial?

    在你学习流利的nhibernate之前掌握nhibernate是有意义的。正如@jaguar所说,它位于NHibernate的顶部。

    也许值得一看nhlambdaextensions.googlecode.com,尽管它将包含在下一个版本中!

    有关nhibernate教程,请查看dimcasts或tekpub-或nhibernate.info-参见问题

    Learning NHibernate

    NHibernate是数据库不可知论者。:)