NHibernate是一个对象关系映射(ORM)框架,它允许开发者以面向对象的方式来处理数据库操作。本教程将指导如何在VB.NET2005 环境中使用 NHibernate 与PostgreSQL数据库进行交互。
首先,需要下载并安装NHibernate。可以从 下载,或者在 Google 中搜索 NHibernate 并下载。
在 Visual Studio 2005 中创建一个新的 Windows 应用程序项目,命名为 "WindowsApplication1"。
在项目中添加一个表单,放置三个标签和文本框,分别用于输入员工编号(eno)、姓名(ename)和工资(salary),以及一个保存按钮。
通过右键点击项目名 "WindowsApplication1" 并选择 "Add Reference",在弹出的对话框中添加以下引用:
在 PostgreSQL数据库中创建一个名为 "testcust" 的表,包含以下字段:
为 eno 字段设置主键。
通过 "Add New Item" 添加一个新的类文件,并将其重命名为 "testcust.vb"。
以下为 testcust.vb 的代码:
Imports NHibernate
Imports NHibernate.Cfg
Imports log4net
Imports System.Configuration
Public Class testcust
Private enumber As Int32
Private sal As Int32
Private empname As String
Public Overridable Property eno() As Int32
Get
Return enumber
End Get
Set(ByVal value As Int32)
enumber = value
End Set
End Property
Public Overridable Property ename() As String
Get
Return empname
End Get
Set(ByVal value As String)
empname = value
End Set
End Property
Public Overridable Property salary() As Int32
Get
Return sal
End Get
Set(ByVal value As Int32)
sal = value
End Set
End Property
End Class
在项目中添加一个新的文本文件,并将其重命名为 "app.config"。在 app.config 文件中编写以下代码:
<?xml version="1.0" encoding="utf-8" ?>
<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>
<log4net>
<appender name="rollingFile" type="log4net.Appender.RollingFileAppender, log4net">
<param name="File" value="log.txt" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyy.MM.dd" />
<param name="StaticLogFileName" value="true" />
<layout type="log4net.Layout.PatternLayout, log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] <%X{auth}> - %m%n" />
</layout>
</appender>
<logger name="MyApp">
<level value="DEBUG" />
<appender-ref ref="rollingFile" />
</logger>
</log4net>
<nhibernate>
<add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider" />
<add key="hibernate.dialect" value="NHibernate.Dialect.PostgreSQLDialect" />
<add key="hibernate.connection.driver_class" value="NHibernate.Driver.NpgsqlDriver" />
<add key="hibernate.connection.connection_string" value="Server=10.3.2.1;Database=GBDEVEL;User Name=erpdotnet;Password=erp" />
</nhibernate>
</configuration>
请根据实际情况修改数据库连接字符串中的用户名、密码和服务器名称。
在 Form1 中添加三个标签和文本框用于输入 eno、ename 和 salary,以及一个保存按钮。以下为 Form1 的代码:
Imports NHibernate
Imports NHibernate.Cfg
Imports log4net
Imports System.Configuration
Imports NHibernate.Connection
Imports Iesi.Collections
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim myConfig As New Configuration
myConfig.AddAssembly("WindowsApplication1")
myConfig.SetProperty("hibernate.dialect", "NHibernate.Dialect.PostgreSQLDialect")
Dim myFactory As ISessionFactory = myConfig.Configure.BuildSessionFactory
Dim mySession As ISession = myFactory.OpenSession
Dim myTransaction As ITransaction = mySession.BeginTransaction
Dim cust As New testcust
cust.eno = TextBox1.Text
cust.ename = TextBox2.Text
cust.salary = TextBox3.Text
mySession.Save(cust)
myTransaction.Commit()
mySession.Close()
MsgBox("success")
End Sub
End Class
创建一个名为 "testcust.hbm.xml" 的映射文件,并编写以下代码:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="WindowsApplication1.testcust, WindowsApplication1" table="erp.testcust">
<id name="eno" column="eno" type="Int32">
<generator class="assigned" />
</id>
<property name="ename" column="ename" type="String" length="15" />
<property name="salary" column="salary" type="Int32" length="12" />
</class>
</hibernate-mapping>
请确保数据库表、类文件和映射文件中的属性名称大小写一致。
也可以使用 "hibernate.cfg.xml" 文件代替 "app.config"。以下是 hibernate.cfg.xml 的示例代码:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="connection.driver_class">NHibernate.Driver.NpgsqlDriver</property>
<property name="connection.connection_string">Server=10.3.2.1;Database=GBDEVEL;User Name=erpdotnet;Password=erp</property>
<property name="show_sql">false</property>
<property name="dialect">NHibernate.Dialect.PostgreSQLDialect</property>
<property name="use_outer_join">true</property>
<mapping resource="WindowsApplication1.testcust.hbm.xml" assembly="WindowsApplication1" />
</session-factory>
</hibernate-configuration>
如果使用 app.config,则不需要编写 hibernate.cfg.xml。反之亦然。
保存并运行VB.NET项目。可以通过这种方式与PostgreSQL数据库进行交互。
请确保正确导入并连接所有必要的库,并将 "testcust.hbm.xml" 文件的 BuildAction 属性设置为 Embedded Resources。
如果没有这样做,可能会遇到 ADO 异常。