只有在实际运用中才能真正的遇到问题 ,并在解决问题的过程中不断提高
在网上参考了 http://blog.aspcool.com/tim/posts/1133.aspx
http://nhibernate.3yee.com/archive/2004/04/26/439.aspx
等多篇文章后
所以 打算写基于NHibernate 的一个小小的留言本,
首先 建数据库

CREATE TABLE [dbo].[G_guestbook] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[userid] [int] NOT NULL ,
[username] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[title] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[article] [ntext] COLLATE Chinese_PRC_CI_AS NULL ,
[pubtime] [datetime] NOT NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

CREATE TABLE [dbo].[G_users] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[Name] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[email] [nvarchar] (40) COLLATE Chinese_PRC_CI_AS NULL ,
[password] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[flag] [int] NOT NULL ,
[regtime] [datetime] NULL
) 很简单的结构,可以用就行了,

第二步是打开 VS.net 新建一个
guestbook.data的工程 ,在这里不得不感谢飞鹰,提供了cool coder这个好东东啊, 虽然还不是哪么的完美,但是生成的实体类,各 映射文件只要稍加改动就可以加到 我的工程里了,节省了大量的时间啊,
我的两个实体类以及 映射文件
using System;

namespace guestbook.data


{
public class guestbooks

{
public guestbooks()

{

}


private System.String _article;
public System.String article

{

get
{ return _article; }

set
{ _article = value; }
}

private System.Int32 _id;
public System.Int32 id

{

get
{ return _id; }

set
{ _id = value; }
}

private System.DateTime _pubtime;
public System.DateTime pubtime

{

get
{ return _pubtime; }

set
{ _pubtime = value; }
}

private System.String _title;
public System.String title

{

get
{ return _title; }

set
{ _title = value; }
}

private System.Int32 _userid;
public System.Int32 userid

{

get
{ return _userid; }

set
{ _userid = value; }
}

private System.String _username;
public System.String username

{

get
{ return _username; }

set
{ _username = value; }
}
}
}

using System;

namespace guestbook.data


{
public class users

{
public users()

{

}


private System.Int32 _flag;
public System.Int32 flag

{

get
{ return _flag; }

set
{ _flag = value; }
}

private System.String _email;
public System.String email

{

get
{ return _email; }

set
{ _email = value; }
}

private System.Int32 _id;
public System.Int32 id

{

get
{ return _id; }

set
{ _id = value; }
}

private System.DateTime _regtime;
public System.DateTime regtime

{

get
{ return _regtime; }

set
{ _regtime = value; }
}

private System.String _Name;
public System.String Name

{

get
{ return _Name; }

set
{ _Name = value; }
}

private System.String _password;
public System.String password

{

get
{ return _password; }

set
{ _password = value; }
}
}
}

还有两个映射文件
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0">
<class name="guestbook.data.users, guestbook.data" table="G_users">
<id name="id" column="id" type="Int32">
<generator class="identity" />
</id>
<property name="Name" type="String(20)" column="Name" />
<property name="email" type="String(40)" column="email" />
<property name="password" type="String(20)" column="password" />
<property name="flag" type="Int32" column="flag" />
<property name="regtime" type="DateTime" column="regtime" />
</class>
</hibernate-mapping>

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0">
<class name="guestbook.data.guestbooks, guestbook.data" table="G_guestbook">
<id name="id" column="id" type="Int32">
<generator class="identity" />
</id>
<property name="userid" type="Int32" column="userid" />
<property name="username" type="String(20)" column="username" />
<property name="title" type="String(100)" column="title" />
<property name="article" type="String" column="article" />
<property name="pubtime" type="DateTime" column="pubtime" />
</class>
</hibernate-mapping> 由于我用的是自动编号,所以,要将
<generator class="assigned" />改为 <generator class="identity"" />
为了能更早的了解代码是否正确,免除只能把界面搭建出来以后才能测试一个小模块的代码的尴尬,所以 请出了,NUnit 虽然我还不是怎么会用,但是一个能你让还不怎么对它怎么熟悉,但就觉得非常好用的软件,实在是太强了

添一个新建项目 命名为 guestbook.test
写一个测试文件
这里的主要目地是为了验证 配置的 正确与否,所以测试文件也写的简单一些了,
using System;
using System.Collections;
using NHibernate;
using NHibernate.Cfg;

using NUnit.Framework;

using guestbook.data;

namespace guestbook.test


{

/**//// <summary>
/// DataLayerUsersTest 的摘要说明。
/// </summary>
[TestFixture]
public class DataLayerUsersTest

{
public DataLayerUsersTest()

{
}

[Test]public void testAdd()

{
Configuration cfg=new Configuration();
cfg.AddXmlFile("users.hbm.xml");

ISessionFactory f=cfg.BuildSessionFactory();
ISession s=f.OpenSession();
ITransaction t=s.BeginTransaction();

users newUser=new users();
newUser.Name="papersnake";
newUser.password="24976904";
newUser.email="papersnakes@gmail.com";
newUser.regtime=DateTime.Now;

s.Save(newUser);

t.Commit();
s.Close();


}
}
}

另一个文件也大同小意不放出来了,编译
打开Nunit ,run 一下,出现一道美丽的绿色。
心情不是一班的好啊,哇卡卡
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?