只有在实际运用中才能真正的遇到问题 ,并在解决问题的过程中不断提高
在网上参考了 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; }
}
}
}
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; }
}
}
}
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 >
< 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 >
为了能更早的了解代码是否正确,免除只能把界面搭建出来以后才能测试一个小模块的代码的尴尬,所以 请出了,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();
}
}
}
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 一下,出现一道美丽的绿色。
心情不是一班的好啊,哇卡卡