1

マッピングファイルのどこに問題があるか知っていますか?

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>

エラー

ここに画像の説明を入力

接続文字列

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

HibernateHelper

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();
                }
            }
        }

    }
}

例外の詳細: ここに画像の説明を入力

4

2 に答える 2

4

例外の詳細を表示します。

ダイアレクト クラス NHibernate.Dialect.MsSql2012Dialect をインスタンス化できませんでした [...]

問題はマッピングではなく、データベース サーバー テクノロジ (RDBMS) の方言を指定する方法です。これは、さまざまな理由で発生する可能性があります。

  • ダウンロードした NHibernate バージョンにない方言を使用しようとしています: 最新バージョン (3.0、3.1、3.2、3.3...?) をお持ちですか?

  • 方言を間違った場所または間違った方法で指定しています。

構成を再確認し、NHibernate の最新バージョンを使用しているかどうかを確認してください。

于 2013-02-24T12:59:27.747 に答える
2

マッピングファイルCharacter.hbm.xmlをVSのプロパティの埋め込みリソースとしてマークしましたか?

于 2013-02-24T12:46:04.997 に答える