使用 NHibernate 3.1 的增删改

简介:

题外话:

虽然微软推出了EF4,但是目前支持EF4的虚拟空间很少,即使有支持的空间,价格也非常昂贵,所以使用NH3.1是比较好的选择,并且NH3.1与EF4一样支持Linq和Lambda表达式。如果对EF4有兴趣的,可以看我之前的一篇博文“Asp.net MVC 2.0 + Unity 2.0(IoC) + EF4.0 实例:RoRoWoBlog 开源项目框架代码

需要的DLL库文件:

1、从官方下载NHibernate-3.1.0.GA-bin.zip,需要用到压缩包中的DLL文件如下:

NHibernate-3.1.0.GA-bin\Required_Bins\Iesi.Collections.dll

NHibernate-3.1.0.GA-bin\Required_Bins\NHibernate.dll

NHibernate-3.1.0.GA-bin\Required_For_LazyLoading\LinFu\NHibernate.ByteCode.LinFu.dll

NHibernate-3.1.0.GA-bin\Required_For_LazyLoading\LinFu\LinFu.DynamicProxy.dll

2、下载ConfORM1.0.1.4_NH3.1GA.zip,需要用到压缩包中的DLL文件如下:

ConfORM1.0.1.4_NH3.1GA\ConfOrm.dll

创建实体类:

using System.Collections.Generic;
using System.Text;
using System;


namespace DiPiPi.Infrastructure.Hibernate.Entity {

public class BlogTag {
public BlogTag() { }
public virtual int Tag_ID { get; set; }
public virtual string TagName { get; set; }
public virtual string ArticleIDs { get; set; }
}
}

增删改操作代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using NHibernate.Dialect;
using NHibernate.Cfg;
using NHibernate.Cfg.Loquacious;
using NHibernate.Cfg.MappingSchema;
using NHibernate.Driver;
using NHibernate.Tool.hbm2ddl;

using NHibernate.ByteCode.LinFu;
using ConfOrm;
using ConfOrm.NH;
using DiPiPi.Infrastructure.Hibernate.Entity;

namespace DiPiPi.Infrastructure.Hibernate
{
public static class DBHelper
{
private const string _ConnectionString =
@"Data Source=localhost;Initial Catalog=DiPiPiDB;Integrated Security=True;Pooling=False";


public static Configuration GetConfiguration()
{

var configure = new Configuration();

configure.SessionFactoryName("DiPiPiDB");

//Proxy扩展方法用于配置NHibernate延迟加载的字节码提供程序
configure.Proxy(p => p.ProxyFactoryFactory<ProxyFactoryFactory>());

configure.DataBaseIntegration(db =>
{
db.Dialect<MsSql2005Dialect>();
db.Driver<SqlClientDriver>();
db.ConnectionString = _ConnectionString;
});

return configure;

}

public static HbmMapping GetMapping()
{

var orm = new ObjectRelationalMapper();
orm.TablePerClass<BlogTag>();
var mapper = new Mapper(orm);
return mapper.CompileMappingFor(new[] { typeof(BlogTag) });
}

public static void Test()
{
//配置NHibernate
var conf = GetConfiguration();
//在Configuration中添加HbmMapping
conf.AddDeserializedMapping(GetMapping(), "BlogTag");
//配置数据库架构元数据
SchemaMetadataUpdater.QuoteTableAndColumns(conf);
//创建数据库架构
new SchemaExport(conf).Create(false, true);
//建立SessionFactory
var factory = conf.BuildSessionFactory();
//打开Session做持久化数据
using (var s = factory.OpenSession())
{
using (var tx = s.BeginTransaction())
{
var blogTag = new BlogTag { TagName = "我的测试" };
s.Save(blogTag);
tx.Commit();
}
}

//查询、排序
using (var s = factory.OpenSession())
{
var query = s.QueryOver<BlogTag>()
.Where(p => p.TagName == "我的测试")
.OrderBy(p => p.Tag_ID).Asc
.List();
}

//打开Session做删除数据
using (var s = factory.OpenSession())
{
using (var tx = s.BeginTransaction())
{
s.CreateQuery("delete from BlogTag").ExecuteUpdate();
tx.Commit();
}
}
//删除数据库架构
new SchemaExport(conf).Drop(false, true);

}

}
}

另外值得一提的是,new SchemaExport(conf).Create(false, true); 这里是先写实体代码再创建的数据库哦,呵呵 ^_^,大家一直追求的 Code First 哈。




本文转自远哥博客园博客,原文链接:http://www.cnblogs.com/taven/archive/2011/04/08/2009847.html,如需转载请自行联系原作者

相关文章
|
8月前
|
Java 关系型数据库 数据库连接
MyBatis增删改查(CRUD)操作
CRUD操作指的就是增加(Create)、读取(Retrieve)、更新(Update)、删除(Delete)这四种基本数据库操作; MyBatis提供了一种简洁且灵活的方式来执行这些操作,通过配置映射文件和编写对应的SQL语句,将Java对象与数据库表进行映射和操作。 准备任务 首先,你需要在你的项目中添加MyBatis的依赖等; 创建数据库连接idea, 接下来,你需要创建一个MyBatis的配置文件(通常是一个XML文件); 注意:com.mysql.cj.jdbc.Driver是从MySQL Connector/J版本8.0开始引入的。在此版本之前,MySQL Connector/J使
87 1
|
Java 数据库连接 数据库
Hibernate实现简单的CRUD操作和常见类(三)上
Hibernate实现简单的CRUD操作和常见类(三)
149 0
Hibernate实现简单的CRUD操作和常见类(三)上
|
Java 数据库连接
Hibernate实现简单的CRUD操作和常见类(三)下
Hibernate实现简单的CRUD操作和常见类(三)
Hibernate实现简单的CRUD操作和常见类(三)下
|
Java 数据库连接 关系型数据库
Hibernate通过createSQLQuery( )方法实现增删改查
Hibernate通过createSQLQuery( )方法实现增删改查http://www.bieryun.com/3112.html Hibernate的三种实现方式之一:createSQLQuery( ) 一、项目结构 二、hibernate核心配置文件:   hibernate.
1195 0
|
Java 数据库连接 mybatis
MyBatis编写映射文件实现增删改操作 附说明及代码
1.看一下我们接口 package cn.bdqn.mybatis.dao; import org.apache.ibatis.annotations.Select; import cn.bdqn.
1124 0
|
数据库 .NET 开发框架
EntityFramework实现增删改查
17-2-23 EF数据库表一定要有主键 【EF实现修改和删除】 ctx.Entry(user).State = System.Data.Entity.EntityState.
886 0
|
SQL Java 数据库连接
初识Mybatis框架,实现增删改查等操作
此第一次接触Mybatis框架确实是有点不适应,特别是刚从Hibernate框架转转型过来,那么为什么要使用Mybatis框架,Mybatis框架和Hibernate框架又有什么异同呢? 这个问题在我的另一篇blogs中有专门的讲解,今天我主要是带着大家来探讨一下如何简单的使用Mybatis这个框...
1213 0