2013-02-24 65 views
1

你知道映射文件的问题在哪里吗?错误的映射NHibernate 3.3

Eroor: 无法编译映射文件:NHibernateTutorial.Mapping.Character.hbm.xml

我加入我的所有文件。

字符

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace NHibernateTutorial.Domain 
{ 
    public class Character 
    { 
     public virtual Guid Id { get; set; } 
     public virtual string Name { get; set; } 
     public virtual int HealthPoints { get; set; } 
     public virtual int Mana { get; set; } 
     public virtual string Profession { get; set; } 
    } 
} 

映射(Character.hbm.xml

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

    <class name="Character"> 
    <id name="Id"> 
     <generator class="guid" /> 
    </id> 
    <property name="Name" /> 
    <property name="HealthPoints" /> 
    <property name="Mana" /> 
    <property name="Profession" /> 
    </class> 

</hibernate-mapping> 

错误

enter image description here

的ConnectionString

<?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="dialect">NHibernate.Dialect.MsSql2012Dialect</property> 
    <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property> 
    <property name="connection.connection_string">Data Source=RAFAL-KOMPUTER\MSSQLSERVER4;Database=rafal;Trusted_Connection=True;</property> 
    </session-factory> 
</hibernate-configuration> 

NHibernateHelper

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using NHibernate; 
using NHibernate.Cfg; 
using NHibernateTutorial.Domain; 

namespace NHibernateTutorial 
{ 
    public class NHibernateHelper 
    { 
     private static ISessionFactory _sessionFactory; 

     private static ISessionFactory SessionFactory 
     { 
      get 
      { 
       if (_sessionFactory == null) 
       { 
        var configuration = new Configuration(); 
        configuration.Configure(); 
        configuration.AddAssembly(typeof(Character).Assembly); 
        _sessionFactory = configuration.BuildSessionFactory(); 
       } 
       return _sessionFactory; 
      } 
     } 

     public static ISession OpenSession() 
     { 
      return SessionFactory.OpenSession(); 
     } 

    } 
} 

字符库

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using NHibernateTutorial.Domain; 
using NHibernate; 

namespace NHibernateTutorial 
{ 
    public class CharacterRepository 
    { 
     public void Add(Character newCharacter) 
     { 
      using (ISession session = NHibernateHelper.OpenSession()) 
      { 
       using (ITransaction transaction = session.BeginTransaction()) 
       { 
        session.Save(newCharacter); 
        transaction.Commit(); 
       } 
      } 
     } 

     public Character GetCharacterByName(string name) 
     { 
      using (ISession session = NHibernateHelper.OpenSession()) 
      { 
       var result = session.QueryOver<Character>().Where(x => x.Name == name).SingleOrDefault(); 
       return result ?? new Character(); 
      } 
     } 

     public void Update(Character newCharacter) 
     { 
      using (ISession session = NHibernateHelper.OpenSession()) 
      { 
       using (ITransaction transaction = session.BeginTransaction()) 
       { 
        session.Update(newCharacter); 
        transaction.Commit(); 
       } 
      } 
     } 

     public void Delete(Character newCharacter) 
     { 
      using (ISession session = NHibernateHelper.OpenSession()) 
      { 
       using (ITransaction transaction = session.BeginTransaction()) 
       { 
        session.Delete(newCharacter); 
        transaction.Commit(); 
       } 
      } 
     } 

    } 
} 

异常详细信息: enter image description here

+0

请写下问题中的内部异常消息:)通常NHibernate说那里发生了什么,此外,也许这将回答这个问题本身! – 2013-02-24 12:27:24

+0

我只得到这个我检查两次调试 - >无法编译映射文档:NHibernateTutorial.Mapping.Character.hbm.xml – 2013-02-24 12:33:31

+0

我对此表示怀疑。检查对话框中的excetion属性,我不是绝对的但接近完全确定有一个错误和原因的集合。 – 2013-02-24 12:43:11

回答

4

请参阅异常详细信息:

无法实例方言类 NHibernate.Dialect.MsSql2012Dialect [...]

你的问题是不是与映射,但你如何指定数据库服务器技术(RDBMS)方言。这种情况可能是由于多种原因:

  • 你试图用你下载的版本的NHibernate不存在方言:你有最新的版本(3.0,3.1,3.2,3.3 ...? )。

  • 您在错误的地方或以错误的方式指定方言。

仔细检查你的配置,如果你有最新版本的NHibernate!

+0

谢谢:)是的工作!两天:)所有我的周末:)现在我可以休息:)嘿嘿 – 2013-02-24 13:04:12

+0

@ Rafael-JuniorMVCDeveloper是啊!最愚蠢的问题是需要更多时间的问题...... – 2013-02-24 13:11:47

2

你有没有在VS的属性标记映射文件Character.hbm.xml为嵌入的资源?

+0

我检查,是的,我做了 – 2013-02-24 12:57:47