NHibernate升级NHibernate.HibernateException:找不到命名连接

时间:2013-07-26 09:11:30

标签: c# activerecord

我想尝试使用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 {       [ActiveRecord的]       公共类Employee:ActiveRecordBase       {           [首要的关键]           public int Id {get;组; }

    [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”,   的firstName);

我收到错误:

  

NHibernate.HibernateException:找不到命名连接字符串   Server =(local); initial catalog = DemoDB; Integrated Security = SSPI

连接有什么问题?

2 个答案:

答案 0 :(得分:2)

Property 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>

答案 1 :(得分:0)

对我来说,根网站的物理路径没有路径。在我的情况下,根站点仅用于保存单个应用程序。我们所有的网站都是由代码创建的,IIS 不进行验证,它只接受您告诉它的内容......包括空白字段。

在 IIS 中打开应用程序设置出现“无法读取配置”错误。

修复是 管理网站 --> 高级设置 填写物理路径(空白) 好的