NHibernate Mapping不起作用

时间:2013-07-25 10:35:03

标签: nhibernate

我创建了控制台应用程序,数据库,模型,XML文件然后我编写了这段代码

using System;
using System.Reflection;
using NHibernate.Cfg;
using NHibernate.Dialect;
using NHibernate.Driver;

namespace NHibernateDemo
{
internal class Program
{
    static void Main(string[] args)
    {
        try
        {
            var cfg = new Configuration();
            cfg.DataBaseIntegration(x =>
                {
                    x.ConnectionString = "Server=.; Database=NHibernateDemo; Integrated Security = SSPI;";
                    x.Driver<SqlClientDriver>();
                    x.Dialect<MsSql2008Dialect>();
                });
            cfg.AddAssembly(Assembly.GetExecutingAssembly());
            var sessionFactory = cfg.BuildSessionFactory();
            using (var session = sessionFactory.OpenSession())
            using (var tx = session.BeginTransaction())
            {
                var customers = session.CreateCriteria<Customer>()
                                       .List<Customer>();
                foreach (var customer in customers)
                {
                    Console.WriteLine("{0} {1}", customer.FirstName, customer.LastName);
                }
                tx.Commit();
                Console.WriteLine("Enter any key to exit...");
                Console.ReadKey();
            }
        }

        catch (Exception e)
        {
        }

    }
}
}

我没有收到任何错误和任何异常,但我也没有从数据库中获取任何信息,只是在控制台中使用字符串"Enter any key to exit..."。 怎么了?

UPD
XML文件

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mappin xmlns="urn:nhibernate-mapping-2.2"
                  assembly="NHibernateDemo"
                  namespace="NHibernateDemo">
    <class name="Customer">
        <id name="Id">
            <generator class="native" />
        </id>
        <property name="FirstName"/>
        <property name="LastName"/>
    </class>
</hibernate-mappin>

2 个答案:

答案 0 :(得分:2)

您是否已将xml映射文件添加到Assembly.GetExecutingAssembly())?您必须创建嵌入式资源。否则你将拥有你所描述的行为。

转到文件的属性以更改构建操作。

答案 1 :(得分:1)

映射XML文件的根标记必须是hibernate-mapping(注意末尾的“g”)。