NHibernate无法使用MySql编译映射文档

问题描述:

我目前正试图使用​​NHibernate连接到MySQL数据库。目前为止的基本操作是在UI中向数据库添加新用户。目前我的代码如下所示: -NHibernate无法使用MySql编译映射文档

的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.MySqlDataDriver 
     </property> 
     <property name="connection.connection_string">   
      Server=*********;Database=********;Username=*********;Password=*********; 
     </property> 
     <property name="dialect"> 
      NHibernate.Dialect.MySQLDialect 
     </property> 
     <property name="show_sql"> 
      true 
     </property> 
    </session-factory> 
</hibernate-configuration> 

User.cs

namespace APIDB.Domain 
{ 
    class User 
    { 
     public virtual Guid Id { get; set; } 
     public virtual string Username { get; set; } 
     public virtual string Password { get; set; } 
     public virtual bool LoggedIn { get; set; } 
    } 
} 

User.hbm.xml

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" 
       assembly="WindowsFormsApplication1" 
       namespace="WindowsFormsApplication1.Domain"> 

    <class name="User"> 
     <id name="Id"> 
      <column name="Id" /> 
      <generator class="guid" /> 
     </id> 
     <property name="Username" column="Username" /> 
     <property name="Password" column="Password"/> 
     <property name="LoggedIn" column="LoggedIn"/> 
    </class> 
</hibernate-mapping> 

NHibernateHelper.cs

DAO添加方法

namespace APIDB 
{ 
    class DAO 
    { 
     public void Add(User newUser) 
     { 
      using (ISession session = NHibernateHelper.OpenSession()) 
      { 
       using(ITransaction transaction = session.BeginTransaction()) 
       { 
        session.Save(newUser); 
        transaction.Commit(); 
       } 
      } 
     } 
    } 
} 

呼叫在主界面

public void addClient(String username, String password) 
{ 
    LoadHibernateCfg(); 
    DAO dao = new DAO(); 
    var tempUser = new User { Username = username, Password = password, LoggedIn = true }; 
    dao.Add(tempUser); 
} 

public static void LoadHibernateCfg() 
{ 
    var cfg = new NHibernate.Cfg.Configuration(); 
    cfg.Configure(); 
    cfg.AddAssembly(typeof(User).Assembly); //ERROR OCCURS ON THIS LINE 
    new SchemaExport(cfg).Execute(true, true, false); 
} 

当我尝试运行此代码,MappingException抛出我得到的消息: -

NHibernate Could not compile the mapping document: WindowsFormsApplication1.Mapping.User.hbm.xml

任何帮助纠正这个问题,非常感谢。

它看起来像映射“WindowsFormsApplication1.Domain”中的名称空间不同于实际的域名称空间“APIDB.Domain”。程序集名称也可能是错误的,但我不知道生成的程序集名称是用于项目的。

+0

快速问题,在哪里可以找到我的项目中的程序集名称? –

+0

@ChrisGraves:在你的项目中属性可能是。 –