Wenn Sie NHibernate in Code konfigurieren und nicht mit app.config oder web.config, sollten Sie das von Ihnen beschriebene Problem vermeiden können. Zum Beispiel könnten Sie Fluent NHibernates Funktion Fluent Configuration verwenden, um NHibernate zu konfigurieren und somit die Verwendung von sowohl web.config als auch hibernate.cfg.xml zu vermeiden, was möglicherweise auch einige Probleme verursachen könnte.
Ich verwende diesen Ansatz derzeit in einer Webanwendung, bei der sich die Datenzugriffsebene in einer separaten Assembly befindet und die Webassembly keinen Verweis auf NHibernate enthält und weder web.config noch eine hibernate.cfg geändert werden muss. XML-Datei verwendet. Hier
ist ein Beispiel für eine Fluent Konfiguration:
sessionFactory = Fluently.Configure()
.Mappings(x => x
.FluentMappings.AddFromAssemblyOf<FooMap>()
.ConventionDiscovery.AddFromAssemblyOf<BarConvention>()
)
.Database(MsSqlConfiguration.MsSql2005.ConnectionString(x => x
.Database("YourDbName")
.Server(@".\SQLEXPRESS")
.TrustedConnection())
.ShowSql())
.BuildSessionFactory();
Update:
Das gleiche Ziel soll es möglich sein, zu erreichen nur Standard NHibernate, durch ihre programmatischen Konfigurationsmöglichkeiten verwenden. Anstatt die web.config oder so zu verwenden, um Ihre Datenbankverbindung usw. zu konfigurieren, könnten Sie eine IDictionary-Instanz an Configuration.SetProperties() übergeben, wenn Sie Ihre Sitzungsfactory erstellen.
Etwas wie folgt aus:
Configuration config = new Configuration();
IDictionary properties = new Hashtable();
properties["hibernate.dialect"] = "NHibernate.Dialect.MsSql2005Dialect";
// more properties here ...
config.SetProperties(properties);
Chapter 3 der docs hat einige Informationen darüber, aber es ist ein bisschen auf der kurzen Seite.
Nun, ich habe Fluent NHibernate nie benutzt - aber das sieht gut aus. Ich würde eine Antwort ohne Fluent bevorzugen. Wir verwenden derzeit die Mapping-Attribute und dann generieren wir die Dateien - aber wenn ich hier keine andere Lösung bekomme, wird Ihre Antwort sicher akzeptiert ... – bernhardrusch
Vielen Dank für Ihre weitere Untersuchung! – bernhardrusch
Kein Problem, froh, dass ich helfen konnte –