NHibernate 做个小项目来试一下吧 一

只有在实际运用中才能真正的遇到问题 ,并在解决问题的过程中不断提高
在网上参考了 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
="[email protected]";
            newUser.regtime
=DateTime.Now;

            s.Save(newUser);

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

            

        }

    }

}

另一个文件也大同小意不放出来了,编译
打开Nunit ,run 一下,出现一道美丽的绿色。
心情不是一班的好啊,哇卡卡

你可能感兴趣的:(Hibernate)