我是NHibernate初学者。能帮我看看代码有什么错误吗?
    我所实现的操作非常简单,就是一个Role类(在TryNHibernate命名空间下),对应一个ROLE_TB表(Oracle 9i)。现在就连Configuration config = new Configuration().AddAssembly("TryNHibernate");这步都通不过。
    提示的错误如下: 
    未处理的“NHibernate.MappingException”类型的异常出现在 nhibernate.dll 中。
    其他信息: The dialect was not set. Set the property hibernate.dialect.
    小弟在做毕设,真是万事开头难啊!恳请大家帮帮忙,我想只要第一步迈出了,后面就会好些。:)
    
    配置文件 TryNHibernate.config如下:
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
<configSections>
<section name="nhibernate" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</configSections>

<nhibernate>
<add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider" />
         <add key="hibernate.dialect" value="NHibernate.Dialect.OracleDialect" />
<add key="hibernate.connection.driver_class" value="NHibernate.Driver.OracleClientDriver" />
<add key="hibernate.connection.connection_string" value="server=192.168.100.253; database=zhan; User id=silent; Password=shenzhoufeichuan;" />  
         </nhibernate>    </configuration>    映射文件如下:
    <?xml version="1.0" ?> 
    <hibernate-mapping xmlns="urn:nhibernate-mapping-2.0" namespace="TryNHibernate" assembly="TryNHibernate">
<class name="Role" table="ROLE_TB">
<id name="Id" column="ROLE_ID">
<generator class="sequence"/>
</id>
<property name="Name" column="ROLE_NAME"/>
<property name="Description" column="ROLE_DESC"/>
</class>
    </hibernate-mapping>    类文件如下:
    using System;
    namespace TryNHibernate
    {
public class Role
{
public Role()
{
//
// TODO: 在此处添加构造函数逻辑
//
} private string id;
private string name;
private string description; public string Id
{
get
{
return id;
}
set
{
id = value;
}
} public string Name
{
get
{
return name;
}
set
{
name = value;
}
} public string Description
{
get
{
return description;
}
set
{
description = value;
}
}
}
}    测试文件如下:
    using System;
    using NHibernate.Cfg;
    using NHibernate;    namespace TryNHibernate
    {
class Test
{
[STAThread]
static void Main(string[] args)
{
Configuration config = new Configuration().AddAssembly("TryNHibernate");
}
}
}
    

解决方案 »

  1.   

    映射文件不对,应写明字段的类型和大小如:<property name="UserName" column= "Name" type="String" length="40"/> 
      

  2.   

    将NHibernate.Dialect.OracleDialect改为
    NHibernate.Dialect.Oracle9Dialect我这里没有Oracle,所以不好帮你试,你自己试试,不行再想办法!
      

  3.   

    我已经将NHibernate.Dialect.OracleDialect改为
    NHibernate.Dialect.Oracle9Dialect
    还是不行...
      

  4.   

     for Oracle是什么意思啊?
      

  5.   

    我将你上面的程序放到工程中调试,用的是sql,刚开始也是不成功有很多问题,经过反复修改调试终于OK啦!下面一下所遇到的问题:1.忘记把log4net.dll,Iesi.Collections.dll放到bin目录下2.映射文件中<class name="Role" table="ROLE_TB">不对,应为
    <class name="TryNHibernate.Role,TryNHibernate" table="ROLE_TB">3.映射文件属性应改为:嵌入的资源希望我遇到的问题对你有帮助!
      

  6.   

    water0661(小水) :
        非常感谢你能替我调试程序,可是你说的注意事项我都注意了,可还是调不通过.
        总是显示:
        未处理的“NHibernate.MappingException”类型的异常出现在 nhibernate.dll 中。
        其他信息: The dialect was not set. Set the property hibernate.dialect.
        真实无奈了......
      

  7.   

    将web.config更名为***.dll.config (***为你要测试的项目名称),并把该文件放在bin里