Spiga

NHibernate之旅(2):第一个NHibernate程序

2008-10-14 16:30 by 李永京, 72885 visits, 收藏, 编辑

NHibernate之旅(2):第一个NHibernate程序

本节内容

  • 开始使用NHibernate
  • 1.获取NHibernate
  • 2.建立数据库表
  • 3.创建C#类库项目
  • 4.设计Domain
    • 4-1.设计持久化类
    • 4-2.编写映射文件
  • 5.数据访问层
    • 5-1.辅助类
    • 5-2.编写操作
  • 6.数据访问层的测试
    • 6-1.配置NHibernate
    • 6-2.测试
  • 结语

作者注:2009-11-06已更新

开始使用NHibernate

我们亲自动手,一步一步搭建一个NHibernate程序来,我以一个实际场景电子交易程序来模拟,客户/订单/产品的经典组合。由于是第一次使用NHibernate,所以我们的目的是映射一张表并完成使用NHibernate来读取数据,下面的一幅图片给了我们第一印象。我们按照基本开发软件思想的流程一步一步完成。

我使用的开发环境:Microsoft Visual Studio 2008 SP1、SQL Server 2008 Express、NHibernate 2.1.1GA。

ORM

1.获取NHibernate

使用官方2009年10月31日最新发布的NHibernate-2.1.1.GA版本。如果你第一次使用NHibernate,先到这里下载NHibernate最新版本(包括源码、发布版本、参考文档、API文档,可选择下载)。如果用到NHibernate的扩展项目到这里下载获得NHibernate Contrib最新版本。NHibernate-2.1.1.GA是.NET2.0平台的最后一个版本,关于NHibernate-2.1.1.GA的更多信息请点击这里

关于NHibernate2.1版本的一些说明:

NHibernate2.1版本改变了ByteCode延迟加载机制,有三种3种IoC框架动态代理方式,分别为:Castle框架、LinFu框架、Spring.Net框架。我们只要选择一种,在配置文件中配置proxyfactory.factory_class节点。

如果使用Castle.DynamicProxy2动态代理,引用NHibernate.ByteCode.Castle.dll程序集并配置proxyfactory.factory_class节点为<property name="proxyfactory.factory_class"> NHibernate.ByteCode.Castle.ProxyFactoryFactory,NHibernate.ByteCode.Castle</property>

如果使用LinFu.DynamicProxy动态代理,引用NHibernate.ByteCode.LinFu.dll程序集并配置proxyfactory.factory_class节点为<property name="proxyfactory.factory_class"> NHibernate.ByteCode.LinFu.ProxyFactoryFactory,NHibernate.ByteCode.LinFu</property>

如果使用Spring.Aop动态代理,引用NHibernate.ByteCode.Spring.dll程序集并配置proxyfactory.factory_class节点为<property name="proxyfactory.factory_class"> NHibernate.ByteCode.Spring.ProxyFactoryFactory,NHibernate.ByteCode.Spring</property>

另外NHibernate2.1要求.NET2.0 SP1以上版本 (System.DateTimeOffset),请使用VS2005的,务必打上Sp1补丁。推荐使用VS2008以上版本。

2.建立数据库表

由于第一次使用,还是按照我们传统的从数据库表配置吧。

打开SQL Server Management Studio Express,新建一个新的数据库NHibernateSample,创建四个表:分别为客户表、订单表、订单产品表、产品表。

数据库模型

3.创建C#类库项目

由于是我们第一个程序,所以我没有按照Domain Driver Design方法去设计这个程序,按照大家的常规思想来实现的,以后有机会再介绍Domain Driver Design设计。

注意 为什么创建C#类库项目呢?在现在软件设计中,大多数都是采用多层架构来设计,比较经典的三层架构(页面表示层,业务逻辑层,数据访问层)通常而言业务逻辑层和数据访问层都是使用类库设计,页面表示层用Web应用程序设计,它引用业务逻辑层和数据访问层类库DLL程序集。

使用VS2008创建C#类库的项目,命名为NHibernateSample。打开项目文件夹,在其项目文件目录上新建SharedLibs文件夹,把下载NHibernate相关程序集文件拷贝到SharedLibs文件夹下。如下图,这里我选择Castle框架动态代理:

目录结构

创建项目,结构如下:

项目结构

  • Domain(领域模型):用于持久化类和O/R Mapping操作
  • Data(Data Access Layer数据访问层):定义对象的CRUD操作
  • Data.Test(数据访问层测试):对数据访问层的测试,这里我使用Nunit单元测试框架
  • Web:Web页面(这篇文章中暂未实现,请参考我的博客其他文章)
项目引用
  • Domain:引用Iesi.Collections.dll程序集(Set集合在这个程序集中)和Castle动态代理
  • Data:引用NHibernate.dll和Iesi.Collections.dll程序集和动态代理相关程序集,Domain引用
  • Data.Test:引用NHibernate.dll和Iesi.Collections.dll程序集,nunit.framework.dll程序集(测试框架),Domain和Data引用

4.设计Domain

4-1.编写持久化类

按简单传统.NET对象(POCOs,Plain Old CLR Objects(Plain Ordinary CLR Objects))模型编程时需要持久化类。在NHibernate中,POCO通过.NET的属性机制存取数据,就可以把它映射成为数据库表。

现在为Customer编写持久化类来映射成为数据库表。新建一个Customer.cs类文件:

namespace NHibernateSample.Domain.Entities
{
    public class Customer
    {
        public virtual int Id { get; set; }
        public virtual string FirstName { get; set; }
        public virtual string LastName { get; set; }
    }
}
规则
  • NHibernate使用属性的getter和setter来实现持久化。
  • 属性可设置为public、internal、protected、protected internal或private
注意 NHibernate默认使用代理功能,要求持久化类不是sealed的,而且其公共方法、属性和事件声明为virtual。在这里,类中的字段要设置为virtual,否则出现“failed: NHibernate.InvalidProxyTypeException : The following types may not be used as proxies: NHibernateSample.Domain.Entities.Customer: method get_Id should be virtual,method set_Id should be virtual”异常。

4-2.编写映射文件

小提示 我们要为Microsoft Visual Studio 2008添加编写NHibernate配置文件智能提示的功能。只要在下载的NHibernate里找到configuration.xsd和nhibernate-mapping.xsd两个文件并复制到X:\Program Files\Microsoft Visual Studio 9.0\Xml\Schemas目录即可。

NHibernate要知道怎样去加载和存储持久化类的对象。这正是NHibernate映射文件发挥作用的地方。映射文件包含了对象/关系映射所需的元数据。元数据包含持久化类的声明和属性到数据库的映射。映射文件告诉NHibernate它应该访问数据库里面的哪个表及使用表里面的哪些字段。

这里,我为Customer.cs类编写映射文件。新建一XML文件,命名为Customer.hbm.xml:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
   assembly="NHibernateSample.Domain"
   namespace="NHibernateSample.Domain.Entities">
  
  <class name ="Customer">
    <id name="Id" column ="CustomerId">
      <generator class ="native"/>
    </id>
    <property name ="FirstName"/>
    <property name ="LastName"/>
  </class>
</hibernate-mapping>
注意 XML文件的默认生成操作为“内容”,这里需要修改为“嵌入的资源”生成,因为NHibernate是通过查找程序集中的资源文件映射实体,使用.NET Reflector查看程序集:
查看程序集
否则出现“ failed: NHibernate.MappingException : No persister for: NHibernateSample.Domain.Entities.Customer”异常。

5.编写数据访问层

5-1.辅助类

我们现在可以开始NHibernate了。首先,我们要从ISessionFactory中获取一个ISession(NHibernate的工作单元)。ISessionFactory可以创建并打开新的Session。一个Session代表一个单线程的单元操作。 ISessionFactory是线程安全的,很多线程可以同时访问它。ISession不是线程安全的,它代表与数据库之间的一次操作。ISession通过ISessionFactory打开,在所有的工作完成后,需要关闭。 ISessionFactory通常是个线程安全的全局对象,只需要被实例化一次。我们可以使用GoF23中的单例(Singleton)模式在程序中创建ISessionFactory。这个实例我编写了一个辅助类NHibernateHelper 用于创建ISessionFactory并配置ISessionFactory和打开一个新的Session单线程的方法,之后在每个数据操作类可以使用这个辅助类创建ISession 。

public class NHibernateHelper
{
    private ISessionFactory _sessionFactory;
    public NHibernateHelper()
    {
        _sessionFactory = GetSessionFactory();
    }
    private ISessionFactory GetSessionFactory()
    {
        return (new Configuration()).Configure().BuildSessionFactory();
    }
    public ISession GetSession()
    {
        return _sessionFactory.OpenSession();
    }
}

5-2.编写操作

在Data中新建一类NHibernateSample.cs,编写一方法GetCustomerId用于读取客户信息。在编写方法之前,我们需要初始化Session。

protected ISession Session { get; set; }
public NHibernateSample(ISession session)
{
    Session = session;
}

NHibernate有不同的方法来从数据库中取回对象。最灵活的方式是使用NHibernate查询语言(HQL),是完全基于面向对象的SQL。

public void CreateCustomer(Customer customer)
{
    Session.Save(customer);
    Session.Flush();
}
public Customer GetCustomerById(int customerId)
{
    return Session.Get<Customer>(customerId);
}

6.编写数据访问层的测试

6-1.配置NHibernate

我们可以几种方法来保存NHibernate的配置,具体以后来介绍,这里我们使用hibernate.cfg.xml文件来配置,不过不必担心,这个文件我们可以在src\NHibernate.Config.Templates文件夹下找到,直接复制到Data.Test中修改一下配置信息和文件输出属性就可以了。

<?xml version="1.0" encoding="utf-8"?>
<hibernate-configuration  xmlns="urn:nhibernate-configuration-2.2" >
    <session-factory>
        <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
        <property name="connection.connection_string">
            Data Source=.\SQLEXPRESS;Initial Catalog=NHibernateSample;
      Integrated Security=True;Pooling=False
        </property>
        <property name="adonet.batch_size">10</property>
        <property name="show_sql">true</property>
        <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>
        <property name="use_outer_join">true</property>
        <property name="command_timeout">10</property>
        <property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>
     <property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, 
      NHibernate.ByteCode.Castle</property>
    <mapping assembly="NHibernateSample.Domain"/>    
    </session-factory>
</hibernate-configuration>
注意 XML文件的默认“复制到输出目录”为“不复制”,这里需要修改为“始终复制”。否则出现“failed: NHibernate.Cfg.HibernateConfigException : An exception occurred during configuration of persistence layer. ----> System.IO.FileNotFoundException : 未能找到文件“NHibernateSample\NHibernateSample.Data.Test\bin\Debug\hibernate.cfg.xml””异常。

6-2.测试

好了,终于可以使用我们的方法了,这里新建一个测试类NHibernateSampleFixture.cs来编写测试用例:调用NHibernateSample类中GetCustomerId方法查询数据库中CustomerId为1的客户,判断返回客户的Id是否为1。

[TestFixture]
public class NHibernateSampleFixture
{
    private NHibernateSample _sample;
    [TestFixtureSetUp]
    public void TestFixtureSetup()
    {
        _sample = new NHibernateSample();
    }
    [Test]
    public void GetCustomerByIdTest()
    {
        var tempCutomer = new Customer {FirstName = "李", LastName = "永京"};
        _sample.CreateCustomer(tempCutomer);
        Customer customer = _sample.GetCustomerById(1);
        int customerId = customer.Id;
        Assert.AreEqual(1,customerId);
    }
}

我们使用TestDriven.NET测试一下这个方法:OK,测试通过。这里我使用NHibernate监视器NHibernate Profiler查看结果:

测试结果

测试结果

结语

在这篇文章中,我们使用NHibernate来构建了一个最基本的项目,没有体现NHibernate更多细节,只描绘了NHibernate的基本面目。当然使用NHibernate有各种各样的程序架构,我按照一般模式构建的。请大家在实际项目中不要参考关于Session管理部分,本系列未做处理,更多实战知识以后介绍。

NHibernate Q&A

下次继续分享NHibernate!

标签: NHibernate
Add your comment

299 条回复

    评论共3页: 上一页 1 2 3 
  1. #200楼 ClientBoy      2009-10-30 18:09
    Could not compile the mapping document: NHibernateSample.Domain.Mappings.Userinfo.hbm.xml
    出现这个异常是在创建会话工厂的时候!
    下面的是我的映射文件:
    <?xml version="1.0" encoding="utf-8" ?>
    <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
    assembly="NHibernateSample.Domain"
    namespace="NHibernateSample.Domain.Entities">
    <class name="Userinfo">
    <id name="Id" column="ID" type="int">
    <generator class="native"/>
    </id>
    <property name="Name" column="Name"/>
    <property name="Sex" column="Sex"/>
    <property name="Birthday" column="Birthday"/>
    <property name="RegisterDate" column="RegisterDate"/>
    </class>
    </hibernate-mapping>

    数据库是偶自己搞的!
     回复 引用 查看   
  2. #201楼[楼主] 李永京      2009-10-30 19:18
    @ClientBoy
    一般这种小问题都是自己粗心造成的,进入异常看看具体错误信息
     回复 引用 查看   
  3. #202楼 PointNet      2009-11-04 15:27
    NHibernateSample.Data.Test.NHibernateSampleFixture (TestFixtureSetUp):
    System.TypeInitializationException : “NHibernate.Cfg.Configuration”的类型初始值设定项引发异常。
    ----> System.IO.FileNotFoundException : 未能加载文件或程序集“log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821”或它的某一个依赖项。系统找不到指定的文件。
     回复 引用 查看   
  4. #203楼 会长      2009-11-10 22:49
    @ClientBoy

    呵呵,我发现你的错误了,你的XML配置文件好像少个“>”。

     回复 引用 查看   
  5. #204楼 会长      2009-11-10 23:09
    @ClientBoy
    不好意思,看错了
     回复 引用 查看   
  6. #205楼 seeping dragon[未注册用户]2009-11-11 20:31
    终于调试成功了,想问一下NHibernate监视器怎么用的,能否写一篇文章介绍一下?
     回复 引用   
  7. #206楼[楼主] 李永京      2009-11-11 20:34
    @seeping dragon
    可以的
     回复 引用 查看   
  8. #207楼 老马的家      2009-11-29 16:07
    有一点不明白:
    以下的(
    XML文件的默认生成操作为“内容”,这里需要修改为“嵌入的资源”生成,因为NHibernate是通过查找程序集中的资源文件映射实体,使用.NET Reflector查看程序集:

    否则出现“ failed: NHibernate.MappingException : No persister for: NHibernateSample.Domain.Entities.Customer”异常。

    怎么改????操作方法???
     回复 引用 查看   
  9. #208楼[楼主] 李永京      2009-11-29 16:18
    引用老马的家:
    有一点不明白:
    以下的(
    XML文件的默认生成操作为“内容”,这里需要修改为“嵌入的资源”生成,因为NHibernate是通过查找程序集中的资源文件映射实体,使用.NET Reflector查看程序集:

    否则出现“ failed: NHibernate.MappingException : No persister for: NHibernateSample.Domain.Entities.Customer”异常。

    怎么改????操作方法???

    还是先学学VS的基本操作再学习C#等基础吧,NHibernate不适合初学者。
    PS:点击文件右键属性里面的
     回复 引用 查看   
  10. #209楼 知乎者也      2009-12-02 14:42
    不是很理解数据源的处理还有就是那两个配置文件是怎么和项目关联的,很疑惑
     回复 引用 查看   
  11. #210楼 撞破南墙      2009-12-09 20:19
    请教:
    NHibernate之旅(2):第一个NHibernate程序
    http://www.cnblogs.com/lyj/archive/2008/10/14/1310913.html
    6-2.测试中

    public void TestFixtureSetup()
    {
    _sample = new NHibernateSample();
    }

    在5-2.编写操作中 他是需要一个参数的。
    怎么他写的时候不呆参数。


    NHibernateSample()需要一个参数的。
    public NHibernateSample(ISession session)
    {
    Session = session;
    }
     回复 引用 查看   
  12. #211楼 haha123[未注册用户]2009-12-10 12:43
    “/”应用程序中的服务器错误。
    --------------------------------------------------------------------------------

    SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间。
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

    异常详细信息: System.Data.SqlTypes.SqlTypeException: SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间。
     回复 引用   
  13. #212楼[楼主] 李永京      2009-12-10 12:46
    @haha123
    SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间。
    你Class类中有哪个DateTime类型的属性没有赋值,数据库没有存进去。
     回复 引用 查看   
  14. #213楼[楼主] 李永京      2009-12-10 12:48
    @撞破南墙
    晕,不好意思,上面的代码没有统一。。。你手动改改就好了
     回复 引用 查看   
  15. #214楼 haha123[未注册用户]2009-12-10 14:13
    @李永京
    我数据库里默认的是getdate()啊。
     回复 引用   
  16. #215楼 budong[未注册用户]2009-12-11 20:41
    这是什么问题?请问下:
    事务(进程 ID 120)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务。

    [没有相关的源行]


    源文件: c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\4c83acb1\b096765b\App_Web_jfysmlhk.3.cs 行: 0

    堆栈跟踪:


    [SqlException (0x80131904): 事务(进程 ID 120)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务。]
    System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +925466
    System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +800118


     回复 引用   
  17. #216楼 爱木木      2009-12-21 18:10
    Test method NHibernateSample.Data.Test.NHibernateSampleFixture.GetCustomerByIdTest threw exception: NHibernate.Cfg.HibernateConfigException: An exception occurred during configuration of persistence layer. ---> System.IO.FileNotFoundException: Could not find file 'E:\lynn-workplace\Assembly\NHibernate\01--Nhibernate之旅系列文章\code\NHibernate之旅\TestResults\Lynn_LYNN-PC 2009-12-21 18_08_15\Out\hibernate.cfg.xml'..

    请问为甚会找'E:\lynn-workplace\Assembly\NHibernate\01--Nhibernate之旅系列文章\code\NHibernate之旅\TestResults\Lynn_LYNN-PC 2009-12-21 18_08_15\Out\hibernate.cfg.xml'下的hibernate.cfg.xml

    而我的hibernate.cfg.xml在'E:\lynn-workplace\Assembly\NHibernate\01--Nhibernate之旅系列文章\code\NHibernate之旅\NHibernateSample.Data.Test\hibernate.cfg.xml'
     回复 引用 查看   
  18. #217楼[楼主] 李永京      2009-12-21 18:56
    手动复制一下就可以了
     回复 引用 查看   
  19. #218楼 alexjordon[未注册用户]2009-12-23 23:28
    我新手,刚看,想问下哪有NHProf的使用方法
     回复 引用   
  20. #219楼 不悔的青春      2009-12-31 11:37
    lz帮我看一个问题,我试了一下你的例子,
    代码如下:
    namespace DbUtility
    {
    public class NHibernateHelper
    {
    private ISessionFactory _sessionFactory;
    private NHibernate.Cfg.Configuration cfg = null;
    public NHibernateHelper()
    {
    _sessionFactory = GetSessionFactory();
    }
    private ISessionFactory GetSessionFactory()
    {
    string configPath = System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "hibernate.cfg.xml";
    cfg = new Configuration().Configure(configPath);
    return cfg.BuildSessionFactory();
    }
    public ISession GetSession()
    {
    return _sessionFactory.OpenSession();
    }

    }
    }
    当运行到cfg = new Configuration().Configure(configPath);
    这句时会报错,错误如下:
    <session-factory> element was not found in the configuration file.
    这是什么原因,谢谢lz.
     回复 引用 查看   
  21. #220楼 不悔的青春      2009-12-31 11:38
    我的配置文件里是有这个配置节的啊:
    <?xml version="1.0" encoding="utf-8"?>
    <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" >
    <session-factory>
    <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
    <property name="connection.connection_string">
    Data Source=(local);Initial Catalog=NHibernateSample;
    Integrated Security=True;Pooling=False
    </property>
    <property name="adonet.batch_size">10</property>
    <property name="show_sql">true</property>
    <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>
    <property name="use_outer_join">true</property>
    <property name="command_timeout">10</property>
    <property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>
    <property name="proxyfactory.factory_class">
    NHibernate.ByteCode.Castle.ProxyFactoryFactory,
    NHibernate.ByteCode.Castle
    </property>
    <mapping assembly="NHibernateSample.Domain"/>
    </session-factory>
    </hibernate-configuration>
     回复 引用 查看   
  22. #221楼[楼主] 李永京      2009-12-31 11:42
    @不悔的青春
    再进去看看具体错误信息innerException.........你这错误信息太笼统了
     回复 引用 查看   
  23. #222楼 不悔的青春      2009-12-31 11:48
    “/”应用程序中的服务器错误。
    --------------------------------------------------------------------------------

    <session-factory> element was not found in the configuration file.
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

    异常详细信息: NHibernate.MappingException: <session-factory> element was not found in the configuration file.

    源错误:


    行 19: {
    行 20: string configPath = System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "hibernate.cfg.xml";
    行 21: cfg = new Configuration().Configure(configPath);
    行 22: return cfg.BuildSessionFactory();
    行 23: }


    源文件: E:\TempTest\NhiberNetDemo\NhibernetHelper\NHibernateHelper.cs 行: 21

    堆栈跟踪:


    [MappingException: <session-factory> element was not found in the configuration file.]
    NHibernate.Cfg.Configuration.DoConfigure(XmlDocument doc) +298
    NHibernate.Cfg.Configuration.Configure(XmlTextReader reader) +484
    NHibernate.Cfg.Configuration.Configure(String resource) +106
    DbUtility.NHibernateHelper.GetSessionFactory() in E:\TempTest\NhiberNetDemo\NhibernetHelper\NHibernateHelper.cs:21
    DbUtility.NHibernateHelper..ctor() in E:\TempTest\NhiberNetDemo\NhibernetHelper\NHibernateHelper.cs:16
    UserManger.Dal.DUserInfo..ctor() in E:\TempTest\NhiberNetDemo\UserManger\Dal\DUserInfo.cs:13
    UserManger.Dal.DUserInfo.GetInstance() in E:\TempTest\NhiberNetDemo\UserManger\Dal\DUserInfo.cs:31
    StuInfo.Index.Button1_Click(Object sender, EventArgs e) in E:\TempTest\NhiberNetDemo\StuInfo\Index.aspx.cs:29
    System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
    System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
    System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
    System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
    System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565


     回复 引用 查看   
  24. #223楼[楼主] 李永京      2009-12-31 11:51
    @不悔的青春
    innerException不是你说的这个.......
     回复 引用 查看   
  25. #224楼[楼主] 李永京      2009-12-31 12:33
    @不悔的青春
    另外看看hibernate.cfg.xml是否设置为始终复制。
    string configPath = System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "hibernate.cfg.xml";这句话是否取到正确的值。
     回复 引用 查看   
  26. #225楼 不悔的青春      2009-12-31 13:13
    E:\TempTest\NhiberNetDemo\StuInfo\hibernate.cfg.xml,这个路径没问题啊,估计可能是配置文件有问题,我这里只引用了一个nhibernet.dll,应该不会有问题吧。
     回复 引用 查看   
  27. #226楼 不悔的青春      2009-12-31 13:28
    找到问题了,是nhibernet的版本不正确.
     回复 引用 查看   
  28. #227楼 guushuuse      2010-01-10 13:31
    能解释一下ByteCode延迟加载机制
     回复 引用 查看   
  29. #228楼 luckyprg      2010-02-09 15:49
    _sample = new NHibernateSample();

    少了ISession参数。
     回复 引用 查看   
  30. #229楼 lovedeeply      2010-03-02 13:09
    NHibernate Profiler
    想请问一下怎么在你个Demo配置并监视nhibernate
     回复 引用 查看   
  31. #230楼[楼主] 李永京      2010-03-02 15:00
    @lovedeeply
    官方有使用说明的:
    Preparing an application to be profiled
    ==================================
    Add a reference to HibernatingRhinos.NHibernate.Profiler.Appender.dll assembly (located in the downloadable zip).
    In the application startup (Application_Start in web applications, Program.Main in windows / console applications or the App constructor for WPF applications), make the following call:
    HibernatingRhinos.NHibernate.Profiler.Appender.NHibernateProfiler.Initialize();


    Profiling the application
    =====================
    Open the HibernatingRhinos.NHibernate.Profiler.Client.exe
    Start using the application.
    You should see the results immediately in the UI.
     回复 引用 查看   
  32. #231楼 lovedeeply      2010-03-02 17:41
    thx,搞定
     回复 引用 查看   
  33. #232楼 倒着走路      2010-03-02 20:59
    真的很不容易 第一篇代码全部通过,谢谢lZ的热心分享;
     回复 引用 查看   
  34. #233楼 uglydog      2010-03-08 20:05
    我在控制台应用程序中测试GetCustomerById方法是总是出现如下错误

    ,1.错误 2 非静态的字段、方法或属性“ConsoleApplication1.Program._sample”要求对象引用 C:\Documents and Settings\Administrator\桌面\新建文件夹 (2)\NHibernateSample\ConsoleApplication1\Program.cs 38 33 ConsoleApplication1
    2.错误 3 字段初始值设定项无法引用非静态字段、方法或属性“ConsoleApplication1.Program._helper” C:\Documents and Settings\Administrator\桌面\新建文件夹 (2)\NHibernateSample\ConsoleApplication1\Program.cs 33 36 ConsoleApplication1
    3.错误 4 字段初始值设定项无法引用非静态字段、方法或属性“ConsoleApplication1.Program._session” C:\Documents and Settings\Administrator\桌面\新建文件夹 (2)\NHibernateSample\ConsoleApplication1\Program.cs 34 64 ConsoleApplication1

    请问是什么原因?
    代码:class Program
    {
    public SessionManager _helper = new SessionManager();
    public ISession _session = _helper.GetSession();
    public NHibernateSample _sample = new NHibernateSample(_session);
    static void Main(string[] args)
    {

    Customer customer = _sample.GetCustomerById(1);
    int customerId = customer.CustomerId;


    Console.WriteLine("Customer的ID是{0}",customerId);
    Console.Read();

    }
    }
     回复 引用 查看   
  35. #234楼 杂客      2010-03-18 15:46
    换了一种配置方式,用的App文件。
    hibernate.cfg.xml文件在集成测试文件环境中不知怎么Copy不出来 改成 Copy always也不行。
    还有那个Customer映射文件也找不到
    new Configuration()).Configure().BuildSessionFactory()
    改为
    newConfiguration()).Configure().AddAssembly(Assembly.GetExecutingAssembly()).BuildSessionFactory()
    就OK了其他没什么问题了。
     回复 引用 查看   
  36. #235楼 风云不羁[未注册用户]2010-05-16 13:50
    李老师,运行时出现下面的错误:
    “/”应用程序中的服务器错误。
    --------------------------------------------------------------------------------

    Could not load type NHibernate.Dialect.OracleDialect. Possible cause: no assembly name specified.
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

    异常详细信息: System.TypeLoadException: Could not load type NHibernate.Dialect.OracleDialect. Possible cause: no assembly name specified.

    源错误:


    行 11: {
    行 12:
    行 13: NHibernate.Cfg.Configuration mCfg = new NHibernate.Cfg.Configuration().Configure();
    行 14: NHibernate.ISessionFactory SessionFactory = null;
    行 15:


    源文件: D:\My Documents\Visual Studio 2008\Projects\NhibernateSample\NhibernateSample\NhibernateSample\Dal.cs 行: 13
     回复 引用   
  37. #236楼[楼主] 李永京      2010-05-16 14:19
    @风云不羁
    Could not load type NHibernate.Dialect.OracleDialect. Possible cause: no assembly name specified.
    没有指定程序集名称~~说明你的方言设置错误,是由于粗心造成的,多了一个句点,应该是<property name="dialect">NHibernate.Dialect.OracleDialect</property>
     回复 引用 查看   
  38. #237楼 风云不羁[未注册用户]2010-05-18 12:10
    谢谢LZ指点,但问题并非你所说,我的方言确实制定错误,查看了Nhirbernate的类库后发现,我的数据库是Oralce 10g,方言改为以下形式:
    NHibernate.Dialect.Oracle10gDialect
    就没有上面的错误,但是又有新的问题来了,还是报错,说是无法解析的关键字:
    Initial Catalog
    我才学这东西,可以说是门外汉。请问楼主,Initial Catalog是干嘛的呢?
    后来我又把connection.connection_string中的Initial Catalog这一项删除了,这一回没报错了,但是出来的网页什么都没有。
     回复 引用   
  39. #238楼[楼主] 李永京      2010-05-18 12:25
    @风云不羁
    那是你客户端软件安装版本错误,另外connection.connection_string是配置连接字符串的,后面的连接内容不是和NHibernate相关的东西~~~
     回复 引用 查看   
  40. #239楼 风云不羁[未注册用户]2010-05-19 10:20
    可有什么比较全面的帮助文档呢?
     回复 引用   
  41. #240楼 再游西方[未注册用户]2010-06-02 13:32
    NHibernate适合怎样的人群学习呢?
    这东西确实不错,但是有些摸不着头脑
     回复 引用   
  42. #241楼[楼主] 李永京      2010-06-02 13:40
    引用再游西方:
    NHibernate适合怎样的人群学习呢?
    这东西确实不错,但是有些摸不着头脑

    至少熟悉ado.net,想用oo思想设计程序的人...
     回复 引用 查看   
  43. #242楼 再游西方[未注册用户]2010-06-02 14:22
    哦,灰常感谢~
    按照文章所述步骤构建的项目,已通过测试~
    感谢LZ~

    继续关注后面的文章中~
     回复 引用   
  44. #243楼 阿滨       2010-06-09 23:17
    NHProfiler怎么用.下载了一个不会用...我下载的版本是不需要安装,直接运行就可以
     回复 引用 查看   
  45. #244楼[楼主] 李永京      2010-06-10 08:53
    @阿滨
    Preparing an application to be profiled
    ==================================
    Add a reference to HibernatingRhinos.Profiler.Appender.dll assembly (located in the downloadable zip).
    In the application startup (Application_Start in web applications, Program.Main in windows / console applications or the App constructor for WPF applications), make the following call:
    HibernatingRhinos.Profiler.Appender.NHibernate.NHibernateProfiler.Initialize();


    Profiling the application
    =====================
    Open the NHProf.exe
    Start using the application you wish to profile
    You should see the results immediately in the UI.
     回复 引用 查看   
  46. #245楼 卡蒙      2010-06-17 11:38
    你这玩意能把新手看死,我靠,代码和你讲的一点都不一样,还是看别人的看明白了,我真服了你了。纠结啊。
     回复 引用 查看   
  47. #246楼 古 月      2010-06-19 22:00
    @不丑不帅

    窃以为你的引用有问题!
    【】里面的词都没有变绿!
    试下 using NUnit.Framework;
     回复 引用 查看   
  48. #247楼 Tony Zhou      2010-07-15 17:53
    初学者最怕配置问题,楼主以后能够提供完整可运行的示例就好了,看到你的code sample里面也没有什么东西啊。
     回复 引用 查看   
  49. #248楼[楼主] 李永京      2010-07-15 18:31
    @Tony Zhou
    配置不是都在文章中说明清楚了,如果自己再不动手实践下怎么知道自己会不会了呢,你想代码例子在我的源码库不是提供了NHibernate Northwind Mapping实例下载 http://code.google.com/p/yjinglee/downloads/list 下载了么,这里有大多数Mapping了,怎么说没有什么东西呢?另外我这个系列部分源码不是在小组里提供下载了么,哎,初学者就喜欢这么抱怨,从自己角度想想也好啊
     回复 引用 查看   
  50. #249楼 Tony Zhou      2010-07-15 19:27
    哦~
     回复 引用 查看   
  51. #250楼 yamaday007[未注册用户]2010-07-24 17:19
    NHibernateSampleFixture 调用的
    public void TestFixtureSetup()
    {
    _sample = new NHibernateSample( );
    }
    构造函数 没有参数啊
     回复 引用   
  52. #251楼[楼主] 李永京      2010-07-24 17:55
    @yamaday007
    那你自己加上吧,上面文章代码构造函数也许贴错了
     回复 引用 查看   
  53. #252楼 我日[未注册用户]2010-07-27 17:38
    屎一样的例子,我日
     回复 引用   
  54. #253楼 chenleinet      2010-07-30 15:01
    我把<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" >
    <session-factory>
    <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
    <property name="connection.connection_string">
    Data Source=.\SQLEXPRESS;Initial Catalog=NHibernateSample;
    Integrated Security=True;Pooling=False
    </property>
    <property name="adonet.batch_size">10</property>
    <property name="show_sql">true</property>
    <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>
    <property name="use_outer_join">true</property>
    <property name="command_timeout">10</property>
    <property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>
    <property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory,
    NHibernate.ByteCode.Castle</property>
    <mapping assembly="NHibernateSample.Domain"/>
    </session-factory>
    </hibernate-configuration>,这段代码放到web.config下,却提示我urn:nhibernate-configuration-2.2,这里边不包含property,请问是怎么回事,谢谢
     回复 引用 查看   
  55. #254楼[楼主] 李永京      2010-07-30 15:20
    @chenleinet
    <configSections>
    <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate"/>
    </configSections>
     回复 引用 查看   
  56. #255楼 chenleinet      2010-08-01 09:21
    引用李永京:
    @chenleinet
    <configSections>
    <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate"/>
    </configSections>

    这段代码有,可依然还是报创建 hibernate-configuration 的配置节处理程序时出错: An exception occurred parsing configuration :元素 命名空间“urn:nhibernate-configuration-2.2”中的“hibernate-configuration”。 的子元素 命名空间“urn:nhibernate-configuration-2.2”中的“property”。 无效。,大哥指点一下吧
     回复 引用 查看   
  57. #256楼[楼主] 李永京      2010-08-01 10:37
    @chenleinet
    <?xml version="1.0"?>
    <configuration>
    	<configSections>
    		<section name="hibernate-configuration"
    		 type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate"
    		requirePermission="false" /> 
    	</configSections>
    	<appSettings/>
    	<connectionStrings/>
    	<system.web>
    		<compilation debug="true"/>
    		<authentication mode="Windows"/>
    		<pages enableViewState="false" enableViewStateMac="false" />
    		<httpModules>
    			<add name="CurrentSessionModule" type="NHibernate.Example.Web.CurrentSessionModule" />
    		</httpModules>
    	</system.web>
    
    	<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
    		<session-factory>
    			<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider, NHibernate</property>
    			<property name="connection.connection_string">
    				Server=(local);initial catalog=nhibernate;Integrated Security=true
    			</property>
    			<property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>
    			<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
    			<property name="current_session_context_class">managed_web</property>
    			<property name="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property>
    		</session-factory>
    	</hibernate-configuration>
    </configuration>
    
    
     回复 引用 查看   
  58. #257楼 青龍      2010-08-17 13:30
    你提到的那个NHibernate profile的监测工具,怎么用法?
     回复 引用 查看   
  59. #258楼 五月的粽      2010-08-20 09:05
    看得不是很明白

    照着做好像总觉得缺少了一些东西
     回复 引用 查看   
  60. #259楼 桀骜的灵魂      2010-09-15 15:14
    博主你好,请问这个hibernate.cfg.xml文件是否要手动复制到输出目录下?貌似这样手动有点怪!
     回复 引用 查看   
  61. #260楼 MonkChen      2010-09-29 23:13
    关于缺少hibernate.cfg.xml的异常报告,可以使用DeploymentItemAttribute解决
    /// <summary>
    ///GetSession 的测试
    ///</summary>
    [TestMethod()]
    //×××××××××加入下面这句就不会报错了×××××××××
    [DeploymentItem("hibernate.cfg.xml")]
    public void GetSessionTest()
    {
    ISession expected = null; // TODO: 初始化为适当的值
    ISession actual;
    actual = NHibernateSample_Accessor.GetSession();
    Assert.AreEqual(expected, actual);
    Assert.Inconclusive("验证此测试方法的正确性。");
    }
     回复 引用 查看   
  62. #261楼 大头娃娃      2010-10-16 11:46
    up
    和JAVA的OO思想如出一辙!
    let me have a look !
     回复 引用 查看   
  63. #262楼 JkD      2010-10-26 16:30
    继续努力,加油!
     回复 引用 查看   
  64. #263楼 kingab520      2010-11-04 12:39
    @李永京
    lz:
    请问,如果数据库是Oracle11g,配置hibernate时,需要注意哪些事项?
     回复 引用 查看   
  65. #264楼[楼主] 李永京      2010-11-04 13:11
    @kingab520
    对应方言和主键策略
     回复 引用 查看   
  66. #265楼 slgirlcn      2010-11-05 11:00
    此文不错,值得推荐!
     回复 引用 查看   
  67. #266楼 比尔锅盖      2010-11-15 10:59
    此文不错,值得推荐!
     回复 引用 查看   
  68. #267楼 无翼南疆      2010-11-18 18:04
    此文不错,值得推荐!
     回复 引用 查看   
  69. #268楼 virus      2010-11-25 09:04
    http://code.google.com/hosting/settings
    老大,我也是在google建立项目。可是这个页面打不开,不能获取google password,就不能checkin项目啊。如何访问呢?
    翻墙吗??
     回复 引用 查看   
  70. #269楼[楼主] 李永京      2010-11-25 09:06
    @virus
    需要
     回复 引用 查看   
  71. #270楼 virus      2010-11-25 12:06
    有什么好的代理网站恩?
    具体如何翻墙呢?
    我找的几个都访问不了。代理可以打开googlecode,但是那个网址还是不能访问。。。
    介绍几个
     回复 引用 查看   
  72. #271楼 谦虚奋进      2010-11-30 15:32
    继续努力,加油!
     回复 引用 查看   
  73. #272楼 陈放      2010-12-19 17:49
    Unable to load type 'NHibernate.ByteCode.Castle.ProxyFactoryFactory,NHibernate.ByteCode.Castle' during configuration of proxy factory class.
    Possible causes are:
    - The NHibernate.Bytecode provider assembly was not deployed.
    - The typeName used to initialize the 'proxyfactory.factory_class' property of the session-factory section is not well formed.

    Solution:
    Confirm that your deployment folder contains one of the following assemblies:
    NHibernate.ByteCode.LinFu.dll
    NHibernate.ByteCode.Castle.dll
     回复 引用 查看   
  74. #273楼 陈放      2010-12-19 17:49
    可以告诉 我这是什么错误吗?
     回复 引用 查看   
  75. #274楼[楼主] 李永京      2010-12-19 18:39
    @陈放
    翻译为中文就知道了....还是程序集问题
     回复 引用 查看   
  76. #275楼 陈放      2010-12-19 20:06
    您好:谢谢楼主的回复 我想问一下 我的确是引用了NHibernate.ByteCode.Castle.dll 这个程序集 为什么老是说我没有引用呢! 我的邮箱是lanhaigcb@163.com 请问楼主可以把你的QQ发到我邮箱吗?
    一运行到这就出错
    return (new Configuration()).Configure().BuildSessionFactory();
     回复 引用 查看   
  77. #276楼[楼主] 李永京      2010-12-20 12:29
    @陈放
    配置文件写的对么
     回复 引用 查看   
  78. #277楼 nbjkj      2010-12-24 14:33
    谢谢LZ,终于测试成功了,跟版本什么的确实没关系,我用的是NHibernate-3.0.0.GA和2.5.9的nunit,这个配置文件确实很容易出错!
     回复 引用 查看   
  79. #278楼[楼主] 李永京      2010-12-29 16:01
    @limengnew
    No persister for: NHibernateSample.Domain.Entities.Customer
    配置问题...
     回复 引用 查看   
  80. #279楼 limengnew      2010-12-29 16:06
    紧急。。。请各位大侠帮助
    “/NHibernateSample.web”应用程序中的服务器错误。
    No persister for: NHibernateSample.Domain.Entities.Customer
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

    异常详细信息: NHibernate.MappingException: No persister for: NHibernateSample.Domain.Entities.Customer

    源错误:

    行 22: public void CreateCustomer(Customer customer)
    行 23: {
    行 24: Session.Save(customer);调用Save()方法出错
    行 25: Session.Flush();
    行 26: }


    源文件: E:\NHibernateT\NHibernateSample.Data\NHibernateSampleT.cs 行: 24

    堆栈跟踪:

    [MappingException: No persister for: NHibernateSample.Domain.Entities.Customer]
    NHibernate.Impl.SessionFactoryImpl.GetEntityPersister(String entityName) +163
    NHibernate.Impl.SessionImpl.GetEntityPersister(String entityName, Object obj) +204
    NHibernate.Event.Default.AbstractSaveEventListener.SaveWithGeneratedId(Object entity, String entityName, Object anything, IEventSource source, Boolean requiresImmediateIdAccess) +90
    NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.SaveWithGeneratedOrRequestedId(SaveOrUpdateEvent event) +127
    NHibernate.Event.Default.DefaultSaveEventListener.SaveWithGeneratedOrRequestedId(SaveOrUpdateEvent event) +106
    NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.EntityIsTransient(SaveOrUpdateEvent event) +266
    NHibernate.Event.Default.DefaultSaveEventListener.PerformSaveOrUpdate(SaveOrUpdateEvent event) +223
    NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.OnSaveOrUpdate(SaveOrUpdateEvent event) +408
    NHibernate.Impl.SessionImpl.FireSave(SaveOrUpdateEvent event) +214
    NHibernate.Impl.SessionImpl.Save(Object obj) +172
    NHibernateSample.Data.NHibernateSampleT.CreateCustomer(Customer customer) in E:\NHibernateT\NHibernateSample.Data\NHibernateSampleT.cs:24
    NHibernateSample.Data.Test.NHibernateSampleFixture.GetCustomerByIdTest() in E:\NHibernateT\NHibernateSample.Data.Test\NHibernateSampleFixture.cs:33
    _Default.Page_Load(Object sender, EventArgs e) in e:\NHibernateT\NHibernateSample.web\Default.aspx.cs:23
    System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
    System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
    System.Web.UI.Control.OnLoad(EventArgs e) +99
    System.Web.UI.Control.LoadRecursive() +50
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627
     回复 引用 查看   
  81. #280楼[楼主] 李永京      2010-12-29 16:26
    @limengnew
    上面文中都提了,配置的时候要注意设置嵌入资源
     回复 引用 查看   
  82. #281楼 limengnew      2010-12-30 09:55
    @李永京
    3Q!其实我一直只修改了hibernate.cfg.xml,
    没有修改Customer.hbm.xml为嵌入资源,太粗心了。。。
     回复 引用 查看   
  83. #282楼 张土土      2011-01-03 20:33
    汗 文章不通俗!
     回复 引用 查看   
  84. #283楼 宋小强      2011-01-11 10:28
    NHibernate Profiler 我下载了这个NHibernate监视器,运行NHProf.exe的时候怎么没反映啊?我是2003 sp2系统。求指教啊,楼主!!!
     回复 引用 查看   
  85. #284楼 我叫小霍      2011-01-28 14:01
    您好李老师,我做.net开发2年多了,以前一直用ado.net访问数据库,手拼sql的方式,目前觉得效率太低了,想找个orm的工具学学,同事们基本分两派,linq2entity or nhibernate,我们用的数据库种类比较多,而且我觉得nh也可以兼容linq的语法,毅然决然的选择了nh,向您学习。
     回复 引用 查看   
  86. #285楼 我叫小霍      2011-01-28 14:03
    请教您一个问题,我没用.net做过test,甚至没建立过test project,您用的测试程序是nhibernate提供的类库生成的是么?
    还有如何运行测试?
    请教您!
     回复 引用 查看   
  87. #286楼 hawthorn      2011-02-10 13:27
    System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36 ,太复杂了 jaw crusher
     回复 引用 查看   
  88. #287楼 jejexu      2011-02-12 11:13
    请那个高手帮我看看这是什么问题

    Unable to load type 'NHibernate.ByteCode.Castle.ProxyFactoryFactory,NHibernate.ByteCode.Castle' during configuration of proxy factory class.
    Possible causes are:
    - The NHibernate.Bytecode provider assembly was not deployed.
    - The typeName used to initialize the 'proxyfactory.factory_class' property of the session-factory section is not well formed.

    Solution:
    Confirm that your deployment folder contains one of the following assemblies:
    NHibernate.ByteCode.LinFu.dll
    NHibernate.ByteCode.Castle.dll
     回复 引用 查看   
  89. #288楼 truth[未注册用户]2011-03-06 23:57
    private ISessionFactory GetSessionFactory()
    {
    return (new Configuration()).Configure().BuildSessionFactory();
    }


    大哥上面代码是否有测试过?
     回复 引用   
  90. #289楼 菊花开[未注册用户]2011-04-03 11:00
    帮忙看一下啊,到底怎么回事,怎么也找不到原因,编译时都能通过的啊!
    Test 'NHibernateSample.Data.Test.NHibernateTestFixture.GetcustomerbyIdTest' failed: TestFixtureSetUp failed in NHibernateTestFixture

    TestFixture failed: NHibernate.MappingException : Could not add assembly NHibernateSample.Domain
    ----> System.IO.FileNotFoundException : 未能加载文件或程序集“NHibernateSample.Domain”或它的某一个依赖项。系统找不到指定的文件。
    0 passed, 1 failed, 0 skipped, took 0.99 seconds (NUnit 2.5.5).
     回复 引用   
  91. #290楼 duncannjm      2011-04-12 11:22
    测试通过,花了点时间,不过需要点基础。
     回复 引用 查看   
  92. #291楼 天水三千      2011-05-08 22:50
    你好,我按你的文章学习NH,首先谢谢你的文章,但是我遇到一个问题,就是我可以添加和查询数据,但是不能修改与删除数据,又不报错,我在数据库的事件查看器看不到有Update和Delete的语句,请问为什么呢?
     回复 引用 查看   
  93. #292楼 yangyang528[未注册用户]2011-06-13 18:39
    请问.net常用的框架有哪些?您认为精通.net 需要掌握哪些技能。
     回复 引用   
  94. #293楼 gd_hgx      2011-07-23 10:55
    Unable to load type 'NHibernate.ByteCode.Castle.ProxyFactoryFactory,
    NHibernate.ByteCode.Castle' during configuration of proxy factory class.
    Possible causes are:
    - The NHibernate.Bytecode provider assembly was not deployed.
    - The typeName used to initialize the 'proxyfactory.factory_class' property of the session-factory section is not well formed.

    运行到这句时候出现以上错误:ISessionFactory sessionFactory = (new Configuration()).Configure().BuildSessionFactory(); 找不到解决方法
     回复 引用 查看   
  95. #294楼 东阁      2011-07-28 14:40
    这个代码好像越改越乱,初学者模仿都不行
     回复 引用 查看   
  96. #295楼 Daywei      2011-07-30 18:08
    我看了官方文档,您的好像有一点不一样,官方文档上扯到了事务
    ITransaction tx = session.BeginTransaction();
    ----
    ---
    tx.Commit()

    请问您不用 与官方文档上用了事务 有什么区别?谢谢。
     回复 引用 查看   
  97. #296楼 轩辕公子      2011-10-02 16:46
    折腾了一个下午,总算是可以保存到数据库里面了,但是楼主可不可以把你的那个测试模块好好的讲解一下啊,到最后我都没能成功的执行测试模块
     回复 引用 查看   
  98. #297楼 think_fish      2011-10-12 23:53
    new NHibernateSimple()实例化这个类的时候少了ISession参数,调用的时候这个参数应该传什么呢?
     回复 引用 查看   
  99. #298楼 无尽思绪      2012-01-17 23:02
    这个文章确实不是写给新手看的, 老手又不需要这样的,看样子是自己总结的文章而已。
     回复 引用 查看   
  100. #299楼 喵了个咪K[未注册用户]2012-02-08 16:10
    照着做了一下却杯具了……
    我用的oracle数据库,配置文件里面的驱动、方言、主键生成策略都改了,但是却抛了System.ArgumentException异常,说不支持关键字provider。我的数据库不在本机,是用的局域网其他机子上的,难道不能?求真相……
     回复 引用   
  101. 评论共3页: 上一页 1 2 3 
发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1310913 SiqtpNBHDOw=