NHibernate映射不';行不通

NHibernate映射不';行不通,nhibernate,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) {

我创建了控制台应用程序、数据库、模型和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)
        {
        }

    }
}
}

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


转到文件的属性以更改生成操作。

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

映射到
Customer
的表是否包含任何行?否则,应用程序的行为与预期的一样。如果它确实包含行,请向我们显示您的映射和NHibernate执行的SQL。当然,我的表包含行!我在问题中添加了XML文件。是的,当然,我更改了嵌入资源上XML文件的构建操作。您能否解释一下
是否已将xml映射文件添加到Assembly.getExecutionGassembly())?
。Assembly.getExecutionGassembly是正在执行的assambly。它应该包含xml文件。通常你会把你的实体放在一个单独的攻击中。然后您必须更改配置。这只是用于学习的控制台应用程序,以及我的Assembly containions Customer.nbm.xml-file。文件名应为Customer.hbm.xml非常感谢!我修复了它,但我的应用程序不再工作:(@Heidel,正如我在另一条评论中所写的,请向我们展示NHibernate执行的SQL。你能解释一下如何获取NHibernate执行的SQL吗?我刚开始学习NHibernate。@Heidel
cfg.DataBaseIntegration(x=>{x.logsqlincole=true;})
我在控制台中再次得到字符串
“输入任意键退出…”
,仅此而已。这是什么意思?
<?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>