nhibernate 新手常见问题

本文介绍在 NHibernate 1.05 版本下配置 *.hbm.xml 映射文件的方法,并说明如何在 ASP.NET 项目中通过 web.config 文件进行配置。同时探讨了在 ClassLib 项目中存放实体类与映射文件的方式,以及常见问题的解决方案。
nhibernate1.05 下测试

1
*.hbm.xml
文件在vs2003里要做为Embedded Resources
If VisualStudio.NET or NAnt is used to build the Assembly then make sure that the hbm.xml files are added as Embedded Resources

2 asp.net项目配置要放到web.config中(如果多数库可单为nibernate节点配置xml文件)
 
< configuration >
< 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 >
.
</ nhibernate >
< log4net >
..
</ log4net >
< system .web >
.
</ system.web >

</ configuration >



3
如果类和*.hbm.xml 文件放到了一个Class Lib的项目里。如何引用?
就是说,我新建了一个Solution包含一个webproject和一个Class Lib project
而关于实体类和映射文件放到Class Lib project里来处理以使项目清晰

http://abluedog.cnblogs.com/archive/2006/04/17/377630.html

使用
cfg.AddAssembly(Assembly.GetExecutingAssembly() );
可以自动寻找类与xml配置文件的信息

注意:
如果有下面的配置文件,
Assemmbly的名字一定要是HIHI,就是Class Lib的项目的生成的dll名要为HIHI
<class name="Business.Data.Employees,HIHI" table="Employees">
等同于
<class name="Employees" table="Employees" namespace="Business.Data" assembly="HIHI">

如果项目名和assembly名不同,可选项目->属性->assembly name 进行修改

(无意中犯下了这个错误..)

4

在映射文件中
byte[] 在映射时要写成Byte[],否则不加载,并提示不认识byte[]类型,(在配置文件也可以写成binary类型)


// 5.26.2006
// add by day


1

1.1
将src/NHibernate下
*.xsd
放到
C:/Program Files/Microsoft Visual Studio .NET 2003/Common7/Packages/schemas/xml
在vs中编写*.hbm.xml中会有属性提示

1.2
 log4net是通过nunit保存日志的
 所以如果你想偷懒不写unit测试,很难理解到nhibernate的运行过程和输出结果
//by day
//这里讲错了
//打开 log4net,会输出记录,便于分析执行了哪些操作

1.3
在*.hbm.xml映射文件中
可以将使用到的HQL,sql语句单独列出来像 ibatis那样
以使项目清晰

<query name = "">
from Product
</query>

<sql-query name="">
select * from product
</sql-query>

1.4

native sql 语句 使用session.CreateSQLQuery()
select  {su.*} from Suppliers su
select  su.* from Suppliers su 这个会出错..

对原生sql的写法有要求..

2 注意

 如果数据库字段可为空。。
 则不能在类属性的Setter中对value进行判断或操作,不然会提示
 System.NullReferenceException: 未将对象引用设置到对象的实例。
 (MyGeneration的别人共享的Nhibernate模板生成的会有这个问题)
 

源码链接: https://pan.quark.cn/s/a4b39357ea24 Modbus协议是一种普遍应用的通信协议,在工业自动化领域具有显著地位,它为不同设备间的客户机/服务器通信确立了标准。该协议立足于OSI模型的第7层,即应用层,旨在实现通过多种总线或网络连接的设备之间的数据交换。Modbus协议主要由三个核心部分构成: 1. **Modbus协议规范**:这部分详细阐述了MODBUS事务处理机制,包括如何组织和发送请求/响应报文。它定义了一组功能码,这些功能码是MODBUS协议的数据包(PDU)的组成部分,用于表明不同的服务操作。 2. **MODBUS报文传输在TCP/IP上的实现指南**:这一部分为开发者提供了在TCP/IP上实现MODBUS应用层的指导,参考了IETF的标准RFC793(TCP)和RFC791(IP),以确保MODBUS报文能在网络上正确传输。 3. **MODBUS报文传输在串行链路上的实现指南**:针对使用如EIA-232和EIA-485等串行通信标准的设备,提供了实现MODBUS应用层的指导,确保在串行链路上的数据完整性。 MODBUS协议支持两种通信模式: - **Modbus RTU (Remote Terminal Unit)**:适用于异步串行通信,通常用于低速、短距离通信,如EIA/TIA-232、EIA-422和EIA/TIA-485。 - **Modbus TCP/IP**:基于互联网协议,使用以太网II/802.3标准,适合高速、远程通信。 在MODBUS通信栈中,MODBUS应用层位于TCP/IP之上,借助TCP的可靠连接特性,确保数据包按顺序到达。而在串行链路上,MODBUS协议则直接与物理层交...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值