Я говорю да. Если вы знаете формат отображения 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 );
}
}