NHibernate / vs2005消息,未能找到元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NHibernate / vs2005消息,未能找到元素相关的知识,希望对你有一定的参考价值。

消息 1 未能找到元素“urn:nhibernate-configuration-2.2:hibernate-configuration”的架构信息。

消息 2 未能找到元素“urn:nhibernate-configuration-2.2:session-factory”的架构信息。

消息 3 未能找到元素“urn:nhibernate-configuration-2.2:property”的架构信息。

消息 4 未能找到属性“name”的架构信息。

……

引用了NHibernate,这是什么错误?

配置文件的问题,在应用程序的app.config中加上以下代码;

<configSections>
<section name="nhibernate" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<!--
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
-->
</configSections>
<nhibernate>
<add key="hibernate.show_sql" value="false"/>
<add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/>
<add key="hibernate.dialect" value="NHibernate.Dialect.Oracle9Dialect"/>
<add key="hibernate.connection.driver_class" value="NHibernate.Driver.OracleClientDriver"/>
<add key="hibernate.connection.connection_string" value="Data Source=****;User Id=****;Password=***;Persist Security Info=true "/>
</nhibernate>
参考技术A 是你没有配置好nhibernate,看看你的hbm.xml,在看看你是怎么配置nhibernate的。

NHibernate代码监视

今天在使用NH连接MySQL的时候,突然想起来MySQL好像并没有类似于SQL SERVER Profiler的功能,那以后调试不是很操蛋吗?搞了半天,发现并没有办法,只好拐个弯解决问题:将NH中的生成的代码直接在VS中输出显示。

/// <summary>
/// SQL语句监视
/// </summary>
public class SQLWatcher : EmptyInterceptor
{
    public override NHibernate.SqlCommand.SqlString OnPrepareStatement(NHibernate.SqlCommand.SqlString sql)
    {
        System.Diagnostics.Debug.WriteLine("===============SQL语句 - Start:===============");
        System.Diagnostics.Debug.WriteLine("    " + sql);
        System.Diagnostics.Debug.WriteLine("===============SQL语句 - End:===============");
        return base.OnPrepareStatement(sql);
    }
}

扩展方法:

/// <summary>
/// 创建可监视的SESSION
/// </summary>
/// <param name="sessionFactory"></param>
/// <returns></returns>
public static ISession CreateSqlWatcher(this ISessionFactory sessionFactory)
{
    return sessionFactory.OpenSession(new SQLWatcher());
}

使用方法:

public IList<SysUser> Test()
{
    ISession session = NHibernateHelper.SessionFactory.CreateSqlWatcher();
    var list = session.Query<SysUser>().ToList();
    var list2 = session.Query<SysUser>().Select(m => new {m.Id, m.UserName}).ToList();
    return list;
}

产生的两条SQL语句

以上是关于NHibernate / vs2005消息,未能找到元素的主要内容,如果未能解决你的问题,请参考以下文章

ORM vs SQL XML,非常简单的中间层

vb.net vs2005里面的如何把DateTimePicker控件里面的显示的时间去掉,也就是我只要显示年/月/日

如何使用 SQL Server 2005 在 NHibernate 中映射 uint

2010年无法将VS2005中的vcproj转换为vcxproj

在 VS 2005 中只转储一部分内存

使用 Visual Studio 2005 构建 LynxOS 应用程序