NHibernate 上升 NHibernate.HibernateException:找不到命名连接
Posted
技术标签:
【中文标题】NHibernate 上升 NHibernate.HibernateException:找不到命名连接【英文标题】:NHibernate rises NHibernate.HibernateException : Could not find named connection 【发布时间】:2013-07-26 11:40:42 【问题描述】:我想尝试一个使用 Active Record + MSSQL2012 的简单示例。 这是我的 App.config 文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" />
</configSections>
<startup>
</startup>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>
<property name="dialect">NHibernate.Dialect.MsSql2008Dialect, NHibernate</property>
<property name="connection.connection_string_name">Server=(local);initial catalog=DemoDB;Integrated Security=SSPI</property>
</session-factory>
</hibernate-configuration>
</configuration>
在本地,我有一个非常简单的数据库 DemoDB,其中包含 3 个表,如果通过 SQL Management Studio 连接到该数据库。
员工类:
使用 Castle.ActiveRecord;
命名空间 ActiveRecordDemo.Domain [活动记录] 公共类员工:ActiveRecordBase [首要的关键] 公共 int ID 获取;放;
[Property] public string FirstName get; set; [Property] public string LastName get; set; [BelongsTo(Type = typeof(Department), Column = "Id")] public Department Department get; set;
当我运行代码时
ActiveRecordStarter.Initialize(ActiveRecordSectionHandler.Instance, typeof(公司),typeof(部门),typeof(员工)); IList 员工 = Employee.FindAllByProperty("FirstName", 名字);
我收到一个错误:
NHibernate.HibernateException:找不到命名的连接字符串 服务器=(本地);初始目录=DemoDB;集成安全=SSPI
连接出了什么问题?
【问题讨论】:
【参考方案1】:属性connection.connection_string_name
强制NHibernate 在App.Config 的标准<connectionStrings>
部分中枚举的字符串中搜索连接字符串。
你有两个选择:
使用属性connection.connection_string
而不是connection.connection_string_name
,将连接字符串放在特殊部分:
<connectionStrings>
<add name="MyConnString" connectionString="Server=(local);initial catalog=DemoDB;Integrated Security=SSPI" />
</connectionStrings>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>
<property name="dialect">NHibernate.Dialect.MsSql2008Dialect, NHibernate</property>
<property name="connection.connection_string_name">MyConnString</property>
</session-factory>
【讨论】:
【参考方案2】:对我来说,根网站的物理路径没有路径。在我的例子中,根站点只是用来保存一个应用程序。我们所有的网站都是由代码创建的,IIS 不会验证,它只会接受你告诉它的内容......包括空白字段。
在 IIS 中打开应用程序设置出现“无法读取配置”错误。
修复是 管理网站 --> 高级设置 填写物理路径(为空白) 好的
【讨论】:
以上是关于NHibernate 上升 NHibernate.HibernateException:找不到命名连接的主要内容,如果未能解决你的问题,请参考以下文章
Nhibernate学习教程-- 第一个NHibernate程序
NHibernate 2 + NHibernate.JetDriver + MS Access:如何访问表的“附件”字段