我正在浏览Fluent nhibernate wiki,我知道Fluent nhibernate
建立在nHibernate
之上......在选择Fluent nHibernate之前,我应该关心/了解nHibernate吗?任何建议......
答案 0 :(得分:2)
你绝对需要来学习NHibernate。流畅的NHibernate只是NHibernate的映射 API的包装器,映射只是使用NHibernate的一小部分。
查询(Criteria / HQL / LINQ),会话,锁定,延迟/急切加载等是使用NHibernate时必须知道的概念,与Fluent NHibernate无关。
答案 1 :(得分:1)
当然,流畅的nhibernate主要是为了使映射更简单(和类型安全)
答案 2 :(得分:1)
我说是的。如果您了解NHibernate的基于XML的映射格式,通过流畅的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使用基于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 );
}
}
答案 3 :(得分:1)
是!
如果你至少不了解NHibernate的基础知识,你将完全迷失。 NHibernate是一个复杂的工具,流畅的NHibernate实际上只是使它更方便 - 它不会隐藏复杂性。
答案 4 :(得分:0)
为教程
尝试这个问题的答案Where can i find a Fluent NHibernate Tutorial?
在学习流利的nhibernate之前掌握NHibernate是有道理的。正如@Jaguar所说,它位于nhibernate之上。
可能值得一看nhlambdaextensions.googlecode.com - 虽然这将包含在下一个版本中!
对于Nhibernate教程,请查看dimecasts或tekpub - 或者nhibernate.info - 参见问题
NHibernate与数据库无关。 :)