using
NHibernate;
using NHibernate.Cfg;
Configuration cfg = new Configuration();
using NHibernate.Cfg;
Configuration cfg = new Configuration();
“NHibernate.Cfg.Configuration”的类型初始值设定项引发异常。
是怎么回事,我引入了dll和命名空间
[分析1]
进一步察看错误提示,有这样的InnerException:
{
"
未能加载文件或程序集“log4net, Version=1.2.9.0, Culture=neutral, PublicKeyToken=b32731d11ce58905”或它的某一个依赖项。系统找不到指定的文件。
"
:
"
log4net, Version=1.2.9.0, Culture=neutral, PublicKeyToken=b32731d11ce58905
"
}
问题可能就出在log4net身上
[解决方法]
果然,在app.config文件中加入下面的section:
<
log4net
>
< appender name = " NHibernateFileLog " type = " log4net.Appender.RollingFileAppender " >
< file value = " Logs/nhibernate.txt " />
< appendToFile value = " true " />
< rollingStyle value = " Size " />
< maxSizeRollBackups value = " 10 " />
< maximumFileSize value = " 100KB " />
< staticLogFileName value = " true " />
< layout type = " log4net.Layout.PatternLayout " >
< conversionPattern value = " %d{HH:mm:ss.fff} [%t] %-5p %c - %m%n " />
</ layout >
</ appender >
< appender name = " GeneralLog " type = " log4net.Appender.RollingFileAppender " >
< file value = " Logs/general.txt " />
< appendToFile value = " true " />
< maximumFileSize value = " 100KB " />
< rollingStyle value = " Size " />
< maxSizeRollBackups value = " 5 " />
< layout type = " log4net.Layout.PatternLayout " >
< conversionPattern value = " %d{HH:mm:ss.fff} [%t] %-5p %c - %m%n " />
</ layout >
</ appender >
< appender name = " DataLog " type = " log4net.Appender.RollingFileAppender " >
< file value = " Logs/data.txt " />
< appendToFile value = " true " />
< maximumFileSize value = " 100KB " />
< rollingStyle value = " Size " />
< maxSizeRollBackups value = " 5 " />
< layout type = " log4net.Layout.PatternLayout " >
< conversionPattern value = " %d{HH:mm:ss.fff} [%t] %-5p %c - %m%n " />
</ layout >
</ appender >
<!-- levels: DEBUG, INFO, WARN, ERROR, FATAL -->
< root >
< level value = " DEBUG " />
< appender - ref ref = " GeneralLog " />
</ root >
< logger name = " NHibernate " additivity = " false " >
< level value = " DEBUG " />
< appender - ref ref = " NHibernateFileLog " />
</ logger >
< logger name = " Pushable.Data " additivity = " false " >
< level value = " DEBUG " />
< appender - ref ref = " DataLog " />
</ logger >
</ log4net >
< appender name = " NHibernateFileLog " type = " log4net.Appender.RollingFileAppender " >
< file value = " Logs/nhibernate.txt " />
< appendToFile value = " true " />
< rollingStyle value = " Size " />
< maxSizeRollBackups value = " 10 " />
< maximumFileSize value = " 100KB " />
< staticLogFileName value = " true " />
< layout type = " log4net.Layout.PatternLayout " >
< conversionPattern value = " %d{HH:mm:ss.fff} [%t] %-5p %c - %m%n " />
</ layout >
</ appender >
< appender name = " GeneralLog " type = " log4net.Appender.RollingFileAppender " >
< file value = " Logs/general.txt " />
< appendToFile value = " true " />
< maximumFileSize value = " 100KB " />
< rollingStyle value = " Size " />
< maxSizeRollBackups value = " 5 " />
< layout type = " log4net.Layout.PatternLayout " >
< conversionPattern value = " %d{HH:mm:ss.fff} [%t] %-5p %c - %m%n " />
</ layout >
</ appender >
< appender name = " DataLog " type = " log4net.Appender.RollingFileAppender " >
< file value = " Logs/data.txt " />
< appendToFile value = " true " />
< maximumFileSize value = " 100KB " />
< rollingStyle value = " Size " />
< maxSizeRollBackups value = " 5 " />
< layout type = " log4net.Layout.PatternLayout " >
< conversionPattern value = " %d{HH:mm:ss.fff} [%t] %-5p %c - %m%n " />
</ layout >
</ appender >
<!-- levels: DEBUG, INFO, WARN, ERROR, FATAL -->
< root >
< level value = " DEBUG " />
< appender - ref ref = " GeneralLog " />
</ root >
< logger name = " NHibernate " additivity = " false " >
< level value = " DEBUG " />
< appender - ref ref = " NHibernateFileLog " />
</ logger >
< logger name = " Pushable.Data " additivity = " false " >
< level value = " DEBUG " />
< appender - ref ref = " DataLog " />
</ logger >
</ log4net >
同时修改configSections节为:
<
configSections
>
< section name = " nhibernate " type = " System.Configuration.NameValueSectionHandler, System,
Version = 1.0 . 5000.0 ,Culture = neutral, PublicKeyToken = b77a5c561934e089 " />
< section name = " log4net " type = " log4net.Config.Log4NetConfigurationSectionHandler,log4net " />
</ configSections >
< section name = " nhibernate " type = " System.Configuration.NameValueSectionHandler, System,
Version = 1.0 . 5000.0 ,Culture = neutral, PublicKeyToken = b77a5c561934e089 " />
< section name = " log4net " type = " log4net.Config.Log4NetConfigurationSectionHandler,log4net " />
</ configSections >
也就是加上log4net,不然会报错。运行的时候new configuration()通过了
[新问题]
当执行到:
ISessionFactory factory
=
config.BuildSessionFactory();
时出现错误:
{
"
未能加载文件或程序集“Iesi.Collections, Version=1.0.0.1, Culture=neutral, PublicKeyToken=154fdcb44c4484fc”或它的某一个依赖项。系统找不到指定的文件。
"
:
"
Iesi.Collections, Version=1.0.0.1, Culture=neutral, PublicKeyToken=154fdcb44c4484fc
"
}
[解决方法]
从nhibernate-1.0.4.0/bin目录中拷贝Iesi.Collections.dll到其他目录(或者不拷贝),然后引用到所在项目中
问题3:Nhibernate1.0或以上版本运行时提示加载程序集有误应修改配置项
把<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0">
改为:<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
问题4:提示Proxy代理有误应加入Castle.DynamicProxy.dll