HNibernate报错了 XML validation error: 未声明“urn:nhibernate-mapping-2.2:nhibernate”元素。

本文介绍了一个HNibernate项目中遇到的XML验证错误问题,详细展示了错误信息及项目的相关代码片段,包括控制台类、NHibernate帮助类、User.hbm.xml映射文件及App.config配置文件。

         请大神帮忙解决这个问题,这个HNibernate刚学,谢谢先。

出现这个错误:ConsoleApplication2.Mapping.User.hbm.xml(2,2): XML validation error: 未声明“urn:nhibernate-mapping-2.2:nhibernate”元素。

 

//这里是控制台

class Program
    {
        static void Main(string[] args)
        {

            Test();
          

        }
        static void Test()
        {
            NHibernateHelper db = new NHibernateHelper();
            ISession session=  db.GetSession();
            using (var trans = session.BeginTransaction())
            {
                User user = new User();
                user.Age = 123;
                user.Name = "janekim";
                session.Save(user);
                trans.Commit();

            }
        }


//NHibernateHelper帮助类

namespace ConsoleApplication2
{
    public class NHibernateHelper
    {
        private ISessionFactory sessfFactory;

        public NHibernateHelper()
        {
            sessfFactory = GetSessionFactory();

        }

        private ISessionFactory GetSessionFactory()
        {
            Configuration config = new Configuration().AddAssembly(Assembly.GetExecutingAssembly());
            return config.BuildSessionFactory();

        }

        public ISession GetSession()
        {
            return sessfFactory.OpenSession();
        }

 

    }
}



//这里是User.hbm.xml

<?xml version="1.0" encoding="utf-8" ?>
<nhibernate xmlns="urn:nhibernate-mapping-2.2">

  <class name="ConsoleApplication2.Domain.User,ConsoleApplication2" table="User"></class>
  
  <id name="Id" length="4">
    <generator class="vative"></generator>
  </id>
  
  <property name="Name">
    <column name="Name" sqltype="nvarchar" length="50" not-null="true"></column>
  </property>
  
  <property name="Age">
    <column name="Age" sqltype="int" length="4" not-null="true"></column>
  </property>

</nhibernate>


//App.config配置文件

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="hibernate-configuration" requirePermission="false" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate"/>
    </configSections>
  
    <hibernate-configuration  xmlns="urn:nhibernate-configuration-2.2" >
    <session-factory name="NHibernate.Test">
      <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
      <property name="connection.connection_string">
        Server=.;initial catalog=NHibernateSample;Integrated Security=SSPI
      </property>
      <property name="dialect">NHibernate.Dialect.MsSql2012Dialect</property>
    </session-factory>
  </hibernate-configuration>
  
  
</configuration>

希望能够帮我解决,thank you!!!
<session-factory> <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider, NHibernate</property> <!-- 每种drever_class对Oracle的性能不一样,OracleClientDriver对高并发性能支持很好;如果需要使用存储过程则必须要使用OracleManagedDataClientDriver; --> <!--<property name="connection.driver_class">NHibernate.Driver.OracleClientDriver</property>--> <!--<property name="connection.driver_class">NHibernate.Driver.OracleDataClientDriver</property>--> <property name="connection.driver_class">NHibernate.Driver.OracleManagedDataClientDriver</property> <property name="connection.connection_string"> <!-- User ID=fheap; Password=fheap; Data Source=(DESCRIPTION=(TRANSPORT_CONNECT_TIMEOUT = 60)(ADDRESS=(PROTOCOL=TCP)(HOST=10.255.1.13)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=10.255.1.14)(PORT=1521))(LOAD_BALANCE=yes)(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=cim)(FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC)(RETRIES=180)(DELAY=5)))); Pooling=True;Max Pool Size = 100;Min Pool Size = 0;Connect Timeout=500;--> User ID=FHEAP; Password=fheap; Data Source=(DESCRIPTION=(TRANSPORT_CONNECT_TIMEOUT = 60)(ADDRESS=(PROTOCOL=TCP)(HOST=172.17.6.28)(PORT=1521))(LOAD_BALANCE=yes)(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=mesdbtest)(FAILOVER_MODE=(TYPE=SELECT)(METHOD=BASIC)(RETRIES=180)(DELAY=5)))); Pooling=True;Max Pool Size = 100;Min Pool Size = 0;Connect Timeout=500; <!--User ID=fheap; Password=123456; Data Source=(DESCRIPTION=(TRANSPORT_CONNECT_TIMEOUT = 60)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.85.128)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=XE)));Pooling=True;Max Pool Size = 150;Min Pool Size = 10;Connect Timeout=500;--> <!--User ID=mesforehope; Password=mesforehope; Data Source=(DESCRIPTION=(TRANSPORT_CONNECT_TIMEOUT = 60)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.255.1.34)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=mesdb)));--> </property> <property name="show_sql">false</property> <property name="dialect">NHibernate.Dialect.Oracle12cDialect</property> <property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property> <!-- If your database setup use an ASCII charset, switch following property to true. --> <property name="oracle.use_n_prefixed_types_for_unicode">false</property> <!-- Depending on your database setup, the default cast length of 4000 may be too big. By example, if previous setting is true, NHibernate may try to use nvarchar2(4000), which will be rejected if its underlying charset is UTF16 and the database MAX_STRING_SIZE is not extended. In such case, reduce it to 2000. --> <property name="query.default_cast_length"></property> <property name="hbm2ddl.keywords">none</property> <!-- 每个线程获取到的session是不一样的。多线程并发一定要配置,否则会导致线程重用,获取一样的session,就会导致后来获取到的session失效 --> <property name="current_session_context_class">thread_static</property> <!--加载映射--> <mapping assembly="Nebula.EAP.Core.Scenario" /> </session-factory> 只更换驱动NHibernate.Driver.OracleClientDriver对其他配置有没有影响
最新发布
06-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值