Ik ben een applicatie in elkaar aan het zetten met NHibernate, LINQ en attributes. Voornamelijk om dit alles te testen (, gezien het nog niet echt productie klaar is). SVN van NHibernate staat hier: https://nhibernate.svn.sourceforge.net/svnroot/nhibernate. Wat bij mij niet werkt is de configuratie in de app.config te zetten, bij de vorige versie werkte dit wel. Je kan dit oplossen door het in een externe xml te gooien, maar dat heb ik liever niet.
Ik heb uiteraard de committer (fabiomaulo) al gemaild, maar die heeft nog niet terug gemaild.
mijn app.config ziet er zo uit:
Hij gooit deze exceptie:
De functie in NHibernate die de exceptie gooit, deze staat in de class NHibernate.Cfg.Environment rond regel 200. Bij de regel met de foreach gooit hij een exceptie omdat NHconfig.SessionFactory.Properties null is.
Hij blijkt die waardes uit de config niet goed in de Dictionary te gooien waardoor deze leeg blijft. Je zou zeggen dit komt door foutieve naamgeving in je xml, maar als je de code bekijkt die dit inleest dan lijkt het allemaal correct.
hibernate leest de configuratie in met behulp van de ConfigurationManager.GetSection() welke ingbouwd is .net.
Heeft iemand enig idee waar het fout gaat?
Ik heb uiteraard de committer (fabiomaulo) al gemaild, maar die heeft nog niet terug gemaild.
mijn app.config ziet er zo uit:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" /> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net-net-1.0" /> </configSections> <hibernate-configuration> <session-factory> <property name="connection.connection_string">;Persist Security Info=True;User ID=;Initial Catalog=;Data Source=</property> <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property> </session-factory> </hibernate-configuration> <log4net> <root> <level value="DEBUG" /> <appender-ref ref="ConsoleAppender" /> </root> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" > </appender> </log4net> </configuration> |
Hij gooit deze exceptie:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| System.TypeInitializationException was unhandled
Message="De type-initialisatiefunctie voor Objects.ORMSessionFactory heeft een uitzondering veroorzaakt."
Source="Objects"
TypeName="Objects.ORMSessionFactory"
StackTrace:
bij Objects.ORMSessionFactory.GetCurrentSession()
bijObjects.Test.Program.Main() in T:\SVN\trunk\src\Objects.Test\Test.cs:regel 12
bij System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
bij System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
bij Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
bij System.Threading.ThreadHelper.ThreadStart_Context(Object state)
bij System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
bij System.Threading.ThreadHelper.ThreadStart()
InnerException: System.TypeInitializationException
Message="De type-initialisatiefunctie voor NHibernate.Cfg.Environment heeft een uitzondering veroorzaakt."
Source="NHibernate"
TypeName="NHibernate.Cfg.Environment"
StackTrace:
bij NHibernate.Cfg.Environment.get_Properties()
bij NHibernate.Cfg.Configuration.Reset() in t:\SVN\NHibernate\trunk\nhibernate\src\NHibernate\Cfg\Configuration.cs:regel 100
bij NHibernate.Cfg.Configuration..ctor(SettingsFactory settingsFactory) in t:\SVN\NHibernate\trunk\nhibernate\src\NHibernate\Cfg\Configuration.cs:regel 165
bij NHibernate.Cfg.Configuration..ctor() in t:\SVN\NHibernate\trunk\nhibernate\src\NHibernate\Cfg\Configuration.cs:regel 181
bij Objects.ORMSessionFactory..cctor() in T:\SVN\trunk\src\Objects\ORMSessionFactory.cs:regel 22
InnerException: System.NullReferenceException
Message="De objectverwijzing is niet op een exemplaar van een object ingesteld."
Source="NHibernate"
StackTrace:
bij NHibernate.Cfg.Environment.LoadGlobalPropertiesFromAppConfig() in t:\SVN\NHibernate\trunk\nhibernate\src\NHibernate\Cfg\Environment.cs:regel 207
bij NHibernate.Cfg.Environment..cctor() in t:\SVN\NHibernate\trunk\nhibernate\src\NHibernate\Cfg\Environment.cs:regel 175
InnerException: |
De functie in NHibernate die de exceptie gooit, deze staat in de class NHibernate.Cfg.Environment rond regel 200. Bij de regel met de foreach gooit hij een exceptie omdat NHconfig.SessionFactory.Properties null is.
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| private static void LoadGlobalPropertiesFromAppConfig() { object config = ConfigurationManager.GetSection(CfgXmlHelper.CfgSectionName); if (config == null) { log.Info(string.Format("{0} section not found in application configuration file",CfgXmlHelper.CfgSectionName)); return; } IHibernateConfiguration NHconfig = config as IHibernateConfiguration; if (NHconfig == null) { log.Info(string.Format("{0} section handler, in application configuration file, is not IHibernateConfiguration, section ignored", CfgXmlHelper.CfgSectionName)); return; } GlobalProperties[PropertyBytecodeProvider] = CfgXmlHelper.ByteCodeProviderToString(NHconfig.ByteCodeProviderType); GlobalProperties[PropertyUseReflectionOptimizer] = NHconfig.UseReflectionOptimizer.ToString(); foreach (KeyValuePair<string, string> kvp in NHconfig.SessionFactory.Properties) { GlobalProperties[kvp.Key] = kvp.Value; } } |
Hij blijkt die waardes uit de config niet goed in de Dictionary te gooien waardoor deze leeg blijft. Je zou zeggen dit komt door foutieve naamgeving in je xml, maar als je de code bekijkt die dit inleest dan lijkt het allemaal correct.
hibernate leest de configuratie in met behulp van de ConfigurationManager.GetSection() welke ingbouwd is .net.
Heeft iemand enig idee waar het fout gaat?
[ Voor 0% gewijzigd door een moderator op 25-06-2008 12:54 . Reden: Code tags gefix0red ]