Nhibernat +CodeSmith

需用软件:

1.NHibernate
 
2.Code Smith

3.NHibernate模板

4.vs2005
NHibernate模板的修改:

 1.打开NHibernate.class.cst,找到如下代码:(在 #region Public Properties  ...... #endregion之间  )  
 把所有生成 get、set 的 public 修饰符改为 public virtual

 2.打开NHibernate.hbm.cst,映射由2.0改为2.2 

实例步骤:
 1.数据库 nHibernate 表:Person
 
 2.打开code Smith visdio 连接数据库:在左侧的浮动窗口schema explore -》数据源图标 -—》Add ->name(数据源名称任意取的如:"dataSK")......
  
 3.添加NHibernate模板 ,右击NHibernate.cst -》execute
  outputDirectory :为类文件和映射文件的保存地址
  sourceDatabase :为自己取的数据源名称
  Assembly:  为默认的数据集名称一般与namespace一致
  namespace:空间名称
  ——》点击 Generate 则可完成类文件和映射文件(注意要将其加在项目中(类项目 项目名与空间要对应),最好不要直接加在网站上)
 
 4.将***.hbm.xml的属性中生成的操作默认生成操作为“内容”,这里需要修改为“嵌入的资源”生成

 5.添加引用:NHibernate.dll (如果是三层架构的话 添加在DAL 数据层)

 6.添加引用:NHibernate.ByteCode.Castle.dll (在 表示层)(也有可能还要添加 NHibernate.ByteCode.LinFu.dll)

  还要在表示层的web.config中


   <?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate"/>
  </configSections>
  <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
    <session-factory>
      <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>
      <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
      <property name="connection.connection_string">Data Source=02B3B152B4144C5/SQLEXPRESS;Initial Catalog=NHibernate;Integrated Security=True</property>
 //数据库连接语句
      <property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>
      <mapping assembly="Test.Model"/>   //映射名字空间

    </session-factory>
  </hibernate-configuration>
  <appSettings/>
  <connectionStrings/>
</configuration>


  7.数据库操作语句:(不要忘了导入名字空间 如:using NHibernate;using NHibernate.Cfg;using Test.Model;)


 NHibernate.Cfg.Configuration config = new NHibernate.Cfg.Configuration().AddAssembly("Test.Model");

 //通过配置对象来产生一个SessionFactory对象,这是一个Session工厂,
 //那么Session是用来干什么的呢?一个Session就是由NHibernate封装
 //的工作单元,我们可以近似地认为它起到ADO.Net中Connection的作用。

        ISessionFactory factory = config.BuildSessionFactory();
        ISession session = factory.OpenSession();

        Person person = new Person();
        person.Name = "Jackie Chan";

 //这里,开启一个由NHibernate封装的事务,当然,在这里最终代表
 //的还是一个真实的数据库事务,但是我们已经不需要再区分到底是
 //一个SqlTransaction还是一个ODBCTransaction了
        ITransaction trans = session.BeginTransaction();
        try
        {
            session.Save(person);
            trans.Commit();
            Response.Write("Insert Success!");
        }
        catch (Exception ex)
        {
            trans.Rollback();
            Response.Write(ex.Message);
        }

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值