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 (11NOT 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 (11NOT 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 一下,出现一道美丽的绿色。
心情不是一班的好啊,哇卡卡
posted @ 2004-10-14 16:49 无心之柳.NET 阅读(...) 评论(...) 编辑 收藏