Oracle 使用ODP 9和Fluent NHibernate进行无效的CastException
我们开始将(Fluent)NHibernate 2.1.2插入到传统ASP.NET应用程序中 以前,我们一直使用System.Data.OracleClient连接到Oracle 9数据库,但由于某些要求(即使用带有HBM映射的Oracle SP),似乎至少对于NH组件,我们必须改为使用Oracle.DataAccess.dll 在大多数情况下,我们通过执行以下操作实现了这一点:Oracle 使用ODP 9和Fluent NHibernate进行无效的CastException,oracle,nhibernate,fluent-nhibernate,Oracle,Nhibernate,Fluent Nhibernate,我们开始将(Fluent)NHibernate 2.1.2插入到传统ASP.NET应用程序中 以前,我们一直使用System.Data.OracleClient连接到Oracle 9数据库,但由于某些要求(即使用带有HBM映射的Oracle SP),似乎至少对于NH组件,我们必须改为使用Oracle.DataAccess.dll 在大多数情况下,我们通过执行以下操作实现了这一点: 在数据层中添加和引用9.2.0.700 Oracle.DataAccess.dll 通过web.config验证Or
hbm2dll.keywords
属性设置为none
。我已经在动态创建的配置和创建SessionFactory的fluent调用中完成了这项工作
NHibernate.Cfg.Configuration cfg =
new NHibernate.Cfg.Configuration()
.SetProperty("dialect", "NHibernate.Dialect.Oracle9iDialect")
.SetProperty("connection.driver_class", "NHibernate.Driver.OracleDataClientDriver")
.SetProperty("connection.connection_string",conn)
.SetProperty("connection.provider","NHibernate.Connection.DriverConnectionProvider")
.SetProperty("hbm2dll.keywords","none")
;
_sessionFactory = Fluently.Configure(cfg)
.Database ( OracleDataClientConfiguration.Oracle9.ConnectionString(conn) )
.Mappings ( x => x.FluentMappings.AddFromAssemblyOf<MyDL>() )
.Mappings ( x => x.HbmMappings.AddFromAssemblyOf<MyEntity>() )
.ExposeConfiguration(x => x.Properties.Add("hbm2dll.keywords", "none"))
.BuildSessionFactory()
;
NHibernate.Cfg.Configuration Cfg=
新的NHibernate.Cfg.Configuration()
.SetProperty(“方言”,“NHibernate.dialogue.Oracle9iDialect”)
.SetProperty(“connection.driver\u class”,“NHibernate.driver.OracleDataClientDriver”)
.SetProperty(“connection.connection_string”,conn)
.SetProperty(“connection.provider”、“NHibernate.connection.DriverConnectionProvider”)
.SetProperty(“hbm2dll.keywords”、“无”)
;
_sessionFactory=fluntly.Configure(cfg)
.Database(OracleDataClientConfiguration.Oracle9.ConnectionString(conn))
.Mappings(x=>x.FluentMappings.AddFromAssemblyOf())
.Mappings(x=>x.HbmMappings.AddFromAssemblyOf())
.ExposeConfiguration(x=>x.Properties.Add(“hbm2dll.keywords”,“none”))
.BuildSessionFactory()
;
但即使如此,我仍然得到同样的残疾例外
还有什么其他原因可能导致这种情况吗?我上面的任何调用是否意外地将
hbm2dll.keywords
属性值返回到其他内容?有什么想法吗?ODP9太旧了,它是根据.NET1.1编译的
您至少需要使用ODP10。是的,我知道,但在这种情况下,ODP9听起来是一个很难满足的要求(啊!)。我们现在正试图针对10个(甚至11个)进行编码;这更多是为了说明我们可能无法杀死ODP9请求。@RichardNeilagan:这就像对IE6有一个严格的要求一样,令人惊讶的是,我们也有这个要求。