Chinaunix首页 | 论坛 | 博客
  • 博客访问: 192375
  • 博文数量: 11
  • 博客积分: 3010
  • 博客等级: 中校
  • 技术积分: 855
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-16 16:26
文章分类
文章存档

2011年(1)

2010年(1)

2009年(2)

2008年(7)

我的朋友
最近访客

分类:

2008-03-15 12:42:37

    前一段时间在学习NHibernate的时候,被那些配置弄得糊里糊涂,有一些很细微的地方不知道错在哪里,花了很多的时间去寻找,最后才调试通过,这里我就把遇到错误的地方以及怎么解决这些错误的方法贴出来,至于怎么利用NHibernate去开发,这个网络上有很多的Demo,大家都可以从网络上找得到并下载下来看,所以我就不附上了,OK...言规正传,以下呢,主要就是在配置方面的三种错误:

  <1>.你得注意你的*.hbm.xml配置档中NHibernate的版本号.
  2.2">
          此处的2.2代表了NHibernate的版本号,必须与你安装的NHibernate的产品版本号相符.
          否则的话,举个例子,若为urn:nhibernate-mapping-2.0,则会出现如下错误:
Could not find schema information for the element 'urn:nhibernate-mapping-2.0:hibernate-mapping'.
 


  <2>.在你的对照类中,必须注意属性的类型,不能缺少virtual关键字.

         属性的类型必须是:public virtual式的.如:pubic virtual int ID
         否则会出现如以下错误:
ex = {"The following types may not be used as proxies:\nTest.Model.Person: method get_ID should be virtual\nTest.Model.Person: method set_ID should be virtual"}
 

 
  <3>.必须注意App.config中的版本号问题.

         应用程序配置档中的
     
            type="System.Configuration.NameValueSectionHandler,System,
Version=1.2.1.4000,Culture=neutral, PublicKeyToken=b77a5c561934e089"/>   
                  
     其中的Version后面的值必须跟被引用的NHibernate组件的版本号是相同的.
    另外publickeyToken=b77a5c561934e089.
     否则会出现如下错误:
    An error occurred creating the configuration section handler for nhibernate: Could not load file or assembly 'System, Version=1.2.1.4000, Culture=neutral, PublicKeyToken=b77a5c566934e089' or one of its dependencies. 系统找不到指定的文件。 (E:\SampeCode\Console\Console01\bin\Debug\Console01.vshost.exe.config line 4)
 

 
另附:对于NHibernate的ADO.NET属性的配置可以有三种方式:
 
(1).利用App.config配置,如下:
 


 
   

 
 
   
   
   
   
   
   
 

    
按这种方法配置完后,在程序中就可以这样使用它:
(1).
Configuration cfg=new Configuration().AddAssambly("NHibernateSampleA");
(2).
Configuration cfg=new Configuration();
cfg.AddClass(typeof(NHibernateSampleA.missile));
 
(2).利用在代码中进行配置,如下:
 Configuration cfg = new Configuration();
 cfg.SetProperty("hibernate.connection.provider", "NHibernate.Connection.DriverConnectionProvider");
cfg.SetProperty("hibernate.connection.connection_string", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=missile.mdb");
cfg.SetProperty("hibernate.dialect", "NHibernate.JetDriver.JetDialect,NHibernate.JetDriver");
cfg.SetProperty("hibernate.connection.driver_class", "NHibernate.JetDriver.JetDriver,NHibernate.JetDriver");
cfg.SetProperty("hibernate.show_sql","true");
cfg.AddAssembly("NHibernateSample1");
 
(3).利用读取配置档的方式来进行,如下:
 
以下配置是写在一个叫做MyAppconfig.cfg.xml的文件中.
 


 
  
 
    NHibernate.Connection.DriverConnectionProvider
 
  
    NHibernate.JetDriver.JetDriver,NHibernate.JetDriver
  
    Provider=Microsoft.Jet.OLEDB.4.0;Data Source=missile.mdb
 
  true
  
    NHibernate.JetDriver.JetDialect,NHibernate.JetDriver
 
  
 
 
 
 
写完配置档后,在程序里面加上配置档的读取.
Configuration cfg = new Configuration();
cfg.Configure(@"C:\SampleCode\NHibernate\MyApp.cfg.xml");
 
OK..这就是第三种的配置方法.
 
OK..整篇文章就此结束啦....Hope this can help you.

| | |  
阅读(1644) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~