采用的是vs2005,nhibernate版本为2.1.0.1002,hibernate.cfg.xml中配置如下:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration  xmlns="urn:nhibernate-configuration-2.2" >
  <session-factory>
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
    <property name="connection.driver_class">NHibernate.Driver.OracleClientDriver</property>
    <property name="dialect">NHibernate.Dialect.Oracle9Dialect</property>
    <property name="connection.connection_string">
      Data Source=otec_192.168.0.249;User ID=userid;Password=psw;
    </property>
    <property name="adonet.batch_size">10</property>
    <property name="show_sql">false</property>    
    <property name="use_outer_join">true</property>
    <property name="command_timeout">60</property>
    <property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>
    <property name="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property>
    <mapping assembly="OraTest"/>
  </session-factory>
</hibernate-configuration>运行代码如下:
            if (session == null)
            {
                session = DataAccessUtil.NHibernateUtil.OpenSession();
            }
            query = session.CreateQuery(" from  CUser");
            queryList = query.List();
执行时总是提示“ORA-12154: TNS: 无法解析指定的连接标识符”;请帮忙看下问题出现在哪里。不胜感激

解决方案 »

  1.   

    otec_192.168.0.249
    这个在oracle里面做了配置吗?
    找到oracle的安装目录
    oracle\ora90\network\ADMIN\tnsnames.ora
    打开
    增加这样的
    otec = 
    (DESCRIPTION = 
    (ADDRESS_LIST = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.249)(PORT = 1521)) 

    (CONNECT_DATA = 
    (SID = qidian) 

    )
    连接的时候,data source直接写otec就可以了
      

  2.   

    是远程数据库,直接用datasource连接可正常连接
      

  3.   

    我试过用SqlDataSource等.net数据控件连接没问题,不知道是不是我的hibernate.cfg.xml设置问题
      

  4.   

    Data Source='(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.249)(PORT=1521))(CONNECT_DATA=(SID=otec)))';Persist Security Info=True;User ID=userid;Password=password;Unicode=True" /