ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Nhibernate Demo(已测试)

Nhibernate Demo(已测试)

原创 Linux操作系统 作者:ljm0211 时间:2012-07-02 17:19:59 0 删除 编辑

最近研究NHibernate,找到这篇文章,A QuickStart Guide to NHibernate
原文讲解的很简单,以为事情也会很简单,于是乎跟着它step by step,结果却怎么也不出来!

于是我把NUnit和log4net的源代码一并都down了下来,加入解决方案,想逐行调试,看看究竟是错在哪里!恶梦从此开始......

对于这三个Open Source项目,虽早有耳闻(NUnit有在用),但却一直没有时间仔细研究它们的代码。这么莽撞地一头扎了进去,感觉自己像是进入了克诺萨斯迷宫——怎么都转不出来...

算了,重新开始!

0、创建数据库NHibernate和相应的表,如下:
CREATE DATABASE NHibernate
GO

USE NHibernate
CREATE TABLE Users(
LogonID varchar(20) NOT NULL default '0',
Name varchar(40) default NULL,
Password varchar(20) default NULL,
EmailAddress varchar(40) default NULL,
LastLogon datetime default NULL,
PRIMARY KEY (LogonID)
)
GO

1、接着,用VS2003新建了个空白解决方案,名为NHibernateDemo。添加一个ClassLibrary,取默认名字ClassLibrary1。添加如下内容的User.cs文件:
using System;
namespace ClassLibrary1
{
public class User
{
   private string id;
   private string userName;
   private string password;
   private string emailAddress;
   private DateTime lastLogon;


   public User()
   {
   }

   public string Id
   {
    get { return id; }
    set { id = value; }
   }

   public string UserName
   {
    get { return userName; }
    set { userName = value; }
   }

   public string Password
   {
    get { return password; }
    set { password = value; }
   }

   public string EmailAddress
   {
    get { return emailAddress; }
    set { emailAddress = value; }
   }

   public DateTime LastLogon
   {
    get { return lastLogon; }
    set { lastLogon = value; }
   }
  
}
}


2、接着添加映射文件User.hbm.xml,内容如下:



  
  
  

  
  
  
  

在解决方案视图中右键单击这个文件,属性,设置它的“生成操作”为“内嵌资源”,这样它就会随类库一起被打包发布了。


3、对NHibernateDemo解决方案,添加一个ConsoleApplication,取默认名字ConsoleApplication1。在其Class1中的主函数内添加如下内容:
Configuration cfg = new Configuration();
cfg.AddAssembly("ClassLibrary1"); // ClassLibary1是类库项目生成的结果文件名

ISessionFactory factory = cfg.BuildSessionFactory();
ISession session = factory.OpenSession();
ITransaction transaction = session.BeginTransaction();

User newUser = new User();
newUser.Id = "joe_cool";
newUser.UserName = "Joseph Cool";
newUser.Password = "abc123";
newUser.EmailAddress = "";
newUser.LastLogon = DateTime.Now;
   
// Tell NHibernate that this object should be saved
session.Save(newUser);

// commit all of the changes to the DB and close the ISession
transaction.Commit();
session.Close();

并在文件开头添加一下几个名字空间:
using NHibernate; // for other NHibernate API
using NHibernate.Cfg; // for class Configuration
using ClassLibrary1; // for class User

当然,你得先为ConsoleApplication1项目添加如下引用:ClassLibrary1.dll, NHibernate.dll,才有可能编译通过。

4、接下来为ConsoleApplication1项目添加app.config文件,其内容如下:


  
        





       key="hibernate.connection.provider"         
    value="/NHibernate.Connection.DriverConnectionProvider"
   />
       key="hibernate.dialect"                     
    value="/NHibernate.Dialect.MsSql2000Dialect"
   />
       key="hibernate.connection.driver_class"         
    value="/NHibernate.Driver.SqlClientDriver"
   />
       key="hibernate.connection.connection_string"
    value="Server=localhost;initial catalog=nhibernate;User ID=sa;Password=123abc;Min Pool Size=2"
   />

如果使用的VS2003,则编译后IDE会自动将这个文件命名为“项目名字+exe.config”,并复制到输出目录下。如果不是,请自己动手拷贝app.config到输出目录,并如上述般命名之。


6、编译。运行。查看数据库结果。

红色数据库配置部分改成本地sql server 的配置

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11411056/viewspace-734397/,如需转载,请注明出处,否则将追究法律责任。

下一篇: Nhibernate Test
请登录后发表评论 登录
全部评论

注册时间:2009-05-14

  • 博文量
    272
  • 访问量
    441976