nhibernate使用

使用步骤

1. 建立库表

2. 建立映射对象

3. 建立映射文件

4. 编写配置文件

5. 编写程序

详细说明

1. 建立库表

 库:    test
   表:    userinfo
   字段:uid char(10), pwd char(20) uid为主键

2. 建立映射对象

using System;

namespace testNHibernate
{
 /// <summary>
 /// UserInfo 的摘要说明。
 /// </summary>
 public class UserInfo
 {

  #region 域

  private string _userName;
  private string _password;

  #endregion

  #region 属性

  public string userName
  {
   get 
   {
    return _userName;
   }
   set 
   {
    _userName = value;
   }
  }

  public string password 
  {
   get 
   {
    return _password;
   }
   set 
   {
    _password = value;
   }
  }

  #endregion
  #region 方法

  public UserInfo()
  {
   //
   // TODO: 在此处添加构造函数逻辑
   //
  }

  #endregion

 }
}

3. 建立映射文件

<?xml version="1.0" encoding="utf-8" ?>

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0">

 <class name="testNHibernate.UserInfo, testNHibernate" table="userinfo">
  <id name="userName" column="uid" type="String" length="10">
   <generator class="assigned" />
  </id>
  
  <property name="password" column="pwd" type="String" length="20"/>
 </class>
 
</hibernate-mapping>

说明:class元素中的class与hibernate中有些不同,除了名字空间,类名外,后面有个集合名,这个集合名不能随便写,一般写名字空间就可以了。具体有什么限制查找中。

4. 编写配置文件

    在web.config或app.config中加入

  <configSections>
  
 <section name="nhibernate" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" />
 <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
 
  </configSections>
   

  <nhibernate>
  <add 
   key="hibernate.show_sql"
   value="true"
  />
  <add 
   key="hibernate.connection.provider"          
   value="NHibernate.Connection.DriverConnectionProvider" 
  />
  <add 
   key="hibernate.dialect"                      
   value="NHibernate.Dialect.MsSql2000Dialect" 
  />
  <add 
   key="hibernate.connection.driver_class"          
   value="NHibernate.Driver.SqlClientDriver" 
  />
  <add 
   key="hibernate.connection.connection_string" 
   value="Server=127.0.0.1;initial catalog=test;User=sa;Password=1234" 
  />
  
 </nhibernate>
 
 <log4net debug="false">
  <appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
   <param name="File" value="Blueblog.log" />
   <param name="datePattern" value="MM-dd HH:mm" />
   <param name="AppendToFile" value="true" />
   <layout type="log4net.Layout.PatternLayout">
    <param name="ConversionPattern" value="[blueblog] %-5p [%t] %d %C{1}.%M(%L) | %m%n" />
    
   </layout>
  </appender>
  <root>
   <level value="DEBUG" />
   <appender-ref ref="LogFileAppender" />
  </root>
 </log4net>

说明:log4net的配置并不是必须的。NHibernate的配置中,只有connection_string需要自己调整,看到网上的一些例子用SPPI登录,实验了多次没有成功,在使用用户名时,不要用User ID=xxx 中间一个空格会被不识别。直接用User就可以了。

       加上log4net是很好的习惯,NHibernate的一些运行都会被记录在日志中。有些错误就可以看到。便于解决问题。

5. 编写程序

log4net.ILog log = log4net.LogManager.GetLogger(this.GetType());
   
   try 
   {
    
    Configuration cfg = new Configuration();
    
    cfg.AddAssembly("testNHibernate");
    cfg.AddXmlFile("C://Inetpub//wwwroot//testNHibernate//UserInfo.hbm.xml");
    
    ISessionFactory sessionFactory = cfg.BuildSessionFactory();
    ISession session = sessionFactory.OpenSession();
    //ITransaction trans = session.BeginTransaction();
    
    UserInfo user = new UserInfo();
    user.userName = "yfpeng6";
    user.password = "yfpeng";
    session.Save(user);
    //trans.Commit();
    session.Flush();

    session.Close();
    
   }
   catch(Exception ex) 
   {
    Response.Write("<p>" + ex.Message);
    log.Error(ex.Message);
   }

说明:具体的操作和hibernate相同,只是下面两句

    cfg.AddAssembly("testNHibernate");
    cfg.AddXmlFile("C://Inetpub//wwwroot//testNHibernate//UserInfo.hbm.xml");

    在我的这次测试中,nhibernate并没有在配置文件中把hbm写入其中。而是在这一一加载。(但我想应该也在在配置文件中加载的方法,测试中)。还有AddAssmbly参数为映射文件中class后面的那个集合,具体为什么这样还是不太明白。

6. 总结

编写这个测试程序时,遇到不少问题,主要是配置和hibernate有些不同。 

在库文件中要有

Iesi.Collections.dll

HashCodeProvider.dll

这两个文件。不用引用到程序。但nhibernate会使用到。

将他们放在nhibernate相同的目录下就可以了,系统会寻找后拷贝到bin/debug/下面。当然直接放进去也可以。

另外在配置文件中,主键要写成

<generator class="assigned" />

否则主键会加不进去

内容概要:本文详细介绍了如何使用Matlab对地表水源热泵系统进行建模,并采用粒子群算法来优化每小时的制冷量和制热量。首先,文章解释了地表水源热泵的工作原理及其重要性,随后展示了如何设定基本参数并构建热泵机组的基础模型。接着,文章深入探讨了粒子群算法的具体实现步骤,包括参数设置、粒子初始化、适应度评估以及粒子位置和速度的更新规则。为了确保优化的有效性和实用性,文中还讨论了如何处理实际应用中的约束条件,如设备的最大能力和制冷/制热模式之间的互斥关系。此外,作者分享了一些实用技巧,例如引入混合优化方法以加快收敛速度,以及在目标函数中加入额外的惩罚项来减少不必要的模式切换。最终,通过对优化结果的可视化分析,验证了所提出的方法能够显著降低能耗并提高系统的运行效率。 适用人群:从事暖通空调系统设计、优化及相关领域的工程师和技术人员,尤其是那些希望深入了解地表水源热泵系统特性和优化方法的专业人士。 使用场景及目标:适用于需要对地表水源热泵系统进行精确建模和优化的情景,旨在找到既满足建筑负荷需求又能使机组运行在最高效率点的制冷/制热量组合。主要目标是在保证室内舒适度的前提下,最大限度地节约能源并延长设备使用寿命。 其他说明:文中提供的Matlab代码片段可以帮助读者更好地理解和复现整个建模和优化过程。同时,作者强调了在实际工程项目中灵活调整相关参数的重要性,以便获得更好的优化效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值