2013-02-24 3 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)

,369을 ConnectionString을

<?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

<?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는 무슨 일이 일어 났는지 말하고, 또한이 질문 자체에 대답 할 것입니다! –

+0

나는 이걸 디버그에서 두 번 확인한다. -> 매핑 문서를 컴파일 할 수 없었다 : NHibernateTutorial.Mapping.Character.hbm.xml –

+0

나는 그것을 의심한다. 대화 상자에서 excetion 속성을 확인하십시오. 오류 및 원인 모음이 있다는 것을 완전히 확신 할 수는 없습니다. –

답변

4

은 예외 세부 사항을 참조하십시오

인스턴스화 할 수 없습니다 방언 클래스 NHibernate.Dialect.MsSql2012Dialect [...]

귀하의 문제가 매핑되지 않습니다하지만 당신은을 지정하는 방법 데이터베이스 서버 기술 (RDBMS) 사투.

  • 당신은 당신의 다운로드 NHibernate에 버전에 존재하지 방언 사용하려는 : 이것은 여러 가지 이유 때문에 발생 될 수 가 최신 버전이 마시기 (3.0, 3.1, 3.2, 3.3 ...?).

  • 방언을 잘못된 위치 또는 잘못된 방법으로 지정하고 있습니다.

구성을 다시 확인하고 최신 버전의 NHibernate를 가지고 있다면!

+0

감사했다 :) 그래, 일하고있다! 2 일 :) 내 주말 내내 :) 나머지는 할 수 있습니다 :) hehe –

+0

@ Rafael-JuniorMVCDeveloper 예! 가장 바보 같은 문제는 시간이 많이 걸리는 문제입니다 ... –

2

당신은 VS의 특성에 포함 리소스로 매핑 파일 Character.hbm.xml을 표시 했습니까?

+0

나는 체크했다, 그렇다 나는 –