NHibernate实现CRUD
来源:互联网 发布:python 截断文件 编辑:程序博客网 时间:2024/05/01 20:29
[代码] hibernate.cfg.xml
01
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
02
<
hibernate-configuration
xmlns
=
"urn:nhibernate-configuration-2.2"
>
03
<
session-factory
>
04
<
property
name
=
"connection.driver_class"
>NHibernate.Driver.SqlClientDriver</
property
>
05
<
property
name
=
"connection.connection_string"
>
06
Data Source=zhou;Initial Catalog=AspNetStudy;User ID=sa;Password=jerry;
07
</
property
>
08
<
property
name
=
"adonet.batch_size"
>10</
property
>
09
<
property
name
=
"show_sql"
>true</
property
>
10
<
property
name
=
"dialect"
>NHibernate.Dialect.MsSql2005Dialect</
property
>
11
<
property
name
=
"use_outer_join"
>true</
property
>
12
<
property
name
=
"command_timeout"
>10</
property
>
13
<
property
name
=
"query.substitutions"
>true 1, false 0, yes 'Y', no 'N'</
property
>
14
<
property
name
=
"proxyfactory.factory_class"
>
15
NHibernate.ByteCode.Castle.ProxyFactoryFactory,
16
NHibernate.ByteCode.Castle
17
</
property
>
18
<
mapping
assembly
=
"NHibernateDemo"
/>
19
</
session-factory
>
20
</
hibernate-configuration
>
[代码] UserInfo.hbm.xml
01
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
02
<
hibernate-mapping
xmlns
=
"urn:nhibernate-mapping-2.2"
03
assembly
=
"NHibernateDemo"
namespace
=
"NHibernateDemo"
>
04
<
class
name
=
"UserInfo"
>
05
<
id
name
=
"UserId"
column
=
"UserId"
>
06
<
generator
class
=
"native"
/>
07
</
id
>
08
<
property
name
=
"UserName"
/>
09
<
property
name
=
"RealName"
/>
10
<
property
name
=
"Age"
/>
11
<
property
name
=
"Sex"
/>
12
<
property
name
=
"Mobile"
/>
13
<
property
name
=
"Phone"
/>
14
<
property
name
=
"Email"
/>
15
</
class
>
16
</
hibernate-mapping
>
[代码] UserInfo.cs
01
using
System;
02
using
System.Collections.Generic;
03
using
System.Text;
04
05
namespace
NHibernateDemo
06
{
07
/// <summary>
08
/// 数据库中UserInfo表的持久化类
09
/// 作者:周公
10
/// 博客地址:http://blog.csdn.net/zhoufoxcn
11
/// 日期:2010-03-19
12
/// </summary>
13
public
class
UserInfo
14
{
15
public
virtual
int
UserId {
get
;
set
; }
16
public
virtual
string
UserName {
get
;
set
; }
17
public
virtual
string
RealName {
get
;
set
; }
18
public
virtual
int
Age {
get
;
set
; }
19
public
virtual
bool
Sex {
get
;
set
; }
20
public
virtual
string
Mobile {
get
;
set
; }
21
public
virtual
string
Phone {
get
;
set
; }
22
public
virtual
string
Email {
get
;
set
; }
23
}
24
}
[代码] NHibernateCRUD.cs
001
using
System;
002
using
System.Collections.Generic;
003
using
System.Text;
004
using
Iesi.Collections;
005
using
NHibernate;
006
using
NHibernate.Cfg;
007
008
namespace
NHibernateDemo
009
{
010
/// <summary>
011
/// 说明:这个类是为了演示NHibernate中的CRUD的用法
012
/// 作者:周公(周金桥)
013
/// 日期:2010-03-07
014
/// </summary>
015
public
class
NHibernateCRUD
016
{
017
private
ISessionFactory sessionFactory;
018
public
NHibernateCRUD()
019
{
020
sessionFactory =
new
Configuration().Configure().BuildSessionFactory();
021
}
022
023
public
ISession GetSession()
024
{
025
return
sessionFactory.OpenSession();
026
}
027
/// <summary>
028
/// 统计用户总数
029
/// </summary>
030
/// <returns></returns>
031
public
int
Count()
032
{
033
#region 方法一
034
//ISession session = GetSession();
035
//ISQLQuery query = session.CreateSQLQuery("select count(1) from UserInfo");
036
//int count = query.List<int>()[0];
037
//session.Close();
038
//return count;
039
#endregion
040
041
#region 方法二
042
ISession session = GetSession();
043
IQuery query = session.CreateQuery(
"select count(c.UserId) from UserInfo c"
);
044
//注意:不能对于count函数不能使用query.List<int>(),因为默认返回的数值类型是long
045
//否则会抛出GenericADOException,异常描述是:Could not execute query[SQL: SQL not available]
046
//InnerException: System.ArgumentException,InnerException描述是:"值“*”不是“System.Int32”类型,不能在此泛型集合中使用。/r/n参数名: value
047
int
count =(
int
)(query.List<
long
>()[0]);
048
session.Close();
049
return
count;
050
#endregion
051
}
052
/// <summary>
053
/// 创建用户
054
/// </summary>
055
/// <param name="info">用户实体</param>
056
/// <returns></returns>
057
public
int
Create(UserInfo info)
058
{
059
ISession session = GetSession();
060
int
newId=(
int
)(session.Save(info));
061
session.Flush();
062
session.Close();
063
return
newId;
064
}
065
/// <summary>
066
/// 读取用户信息
067
/// </summary>
068
/// <param name="userId">用户编号</param>
069
/// <returns></returns>
070
public
UserInfo Read(
int
userId)
071
{
072
ISession session = GetSession();
073
UserInfo info=session.Get<UserInfo>(userId);
074
session.Close();
075
return
info;
076
}
077
/// <summary>
078
/// 更新用户信息
079
/// </summary>
080
/// <param name="info">用户实体</param>
081
/// <returns></returns>
082
public
void
Update(UserInfo info)
083
{
084
ISession session = GetSession();
085
session.Update(info);
086
session.Flush();
087
session.Close();
088
}
089
/// <summary>
090
/// 删除用户
091
/// </summary>
092
/// <param name="userId">用户编号</param>
093
/// <returns></returns>
094
public
void
Delete(
int
userId)
095
{
096
ISession session = GetSession();
097
//在NHibernate中支持直接使用参数值、":"+参数名、?(类似于在Access中使用参数化SQL语句的方式,给参数赋值要按照参数出现的顺序来)等几种方式
098
IQuery query = session.CreateQuery(
"delete from UserInfo where UserId=:UserId"
);
099
//如果采用":"+参数名方式使用参数,那么给参数赋值时不需要在参数名前加":"号,如query.SetInt32(":UserId", userId);就会报错
100
query.SetInt32(
"UserId"
, userId);
101
int
affectedRows = query.ExecuteUpdate();
102
session.Close();
103
//return affectedRows;
104
}
105
106
/// <summary>
107
/// 删除用户
108
/// </summary>
109
/// <param name="userId">用户实体</param>
110
/// <returns></returns>
111
public
void
Delete(UserInfo info)
112
{
113
ISession session = GetSession();
114
session.Delete(info);
115
session.Flush();
116
session.Close();
117
}
118
119
/// <summary>
120
/// 获取用户表中编号最大的用户
121
/// </summary>
122
/// <returns></returns>
123
public
int
GetMaxUserId()
124
{
125
ISession session = GetSession();
126
IQuery query=session.CreateQuery(
"select max(UserId) from UserInfo"
);
127
int
userId=query.List<
int
>()[0];
128
session.Close();
129
return
userId;
130
}
131
}
132
}
[代码] 单元测试 NHibernateTest.cs
01
using
System;
02
using
System.Collections.Generic;
03
using
System.Linq;
04
using
System.Text;
05
using
NUnit.Framework;
06
using
NHibernateDemo;
07
08
namespace
NUnitTest
09
{
10
[TestFixture]
11
public
class
NHibernateTest
12
{
13
private
NHibernateCRUD instance =
null
;
14
[SetUp]
15
public
void
Initialize()
16
{
17
instance =
new
NHibernateCRUD();
18
}
19
[Test]
20
/// <summary>
21
/// 统计用户总数
22
/// </summary>
23
/// <returns></returns>
24
public
void
Count()
25
{
26
Assert.Greater(instance.Count(), 0);
27
}
28
[Test]
29
/// <summary>
30
/// 创建用户
31
/// </summary>
32
/// <param name="info">用户实体</param>
33
/// <returns></returns>
34
public
void
Create()
35
{
36
UserInfo info =
new
UserInfo()
37
{
38
Age = 12,
39
Email =
"zzz@ccav.com"
,
40
Mobile =
"13812345678"
,
41
Phone =
"01012345678"
,
42
RealName =
"测试"
+ DateTime.Now.Millisecond.ToString(),
43
Sex =
true
,
44
UserName =
"zhoufoxcn"
+ DateTime.Now.Millisecond.ToString()
45
};
46
instance.Create(info);
47
}
48
[Test]
49
/// <summary>
50
/// 读取用户信息
51
/// </summary>
52
/// <param name="userId">用户编号</param>
53
/// <returns></returns>
54
public
void
Read()
55
{
56
UserInfo info = instance.Read(1);
57
Assert.NotNull(info);
58
}
59
[Test]
60
/// <summary>
61
/// 更新用户信息
62
/// </summary>
63
/// <param name="info">用户实体</param>
64
/// <returns></returns>
65
public
void
Update()
66
{
67
UserInfo info = instance.Read(1);
68
info.RealName =
"测试"
+ DateTime.Now.Millisecond.ToString();
69
instance.Update(info);
70
}
71
[Test]
72
/// <summary>
73
/// 删除用户
74
/// </summary>
75
/// <param name="userId">用户编号</param>
76
/// <returns></returns>
77
public
void
DeleteByID()
78
{
79
int
userId = instance.GetMaxUserId();
80
instance.Delete(userId);
81
}
82
83
[Test]
84
/// <summary>
85
/// 删除用户
86
/// </summary>
87
/// <param name="userId">用户实体</param>
88
/// <returns></returns>
89
public
void
Delete()
90
{
91
int
userId = instance.GetMaxUserId();
92
UserInfo info = instance.Read(userId);
93
Console.WriteLine(
"MaxUserId="
+ userId);
94
instance.Delete(info);
95
}
96
}
97
}
- NHibernate实现CRUD
- NHibernate实现CRUD
- C#用NHibernate实现CRUD
- .Net——Nhibernate实现CRUD
- ADO.NET与ORM的比较(2):NHibernate实现CRUD
- ADO.NET与ORM的比较(2):NHibernate实现CRUD
- ADO.NET与ORM的比较(2):NHibernate实现CRUD
- ADO.NET与ORM的比较(2):NHibernate实现CRUD
- Nhibernate 基础入门知识 CRUD 数据库表
- NHibernate学习手记(1) - 对象的简单CRUD操作
- NHibernate学习手记(1) - 对象的简单CRUD操作
- NHibernate学习手记(1) - 对象的简单CRUD操作
- NHibernate学习手记(1) - 对象的简单CRUD操作
- Getting Started with NHibernate and ASP.NET MVC- CRUD Operations
- ORM利器:NHibernate(三)五部曲+简单对象CRUD+HQL
- C#的NHibernate的CRUD开发入门代码例子
- MVC下NHibernate使用介绍,配置及CRUD
- NHibernate实现查询分页
- 新闻出版总署一批新闻出版企业将上市
- SMS and the PDU format
- #ifndef #define #endif 的用法
- 在类里运用try catch出现的错误
- VC命名规则
- NHibernate实现CRUD
- Flash 展示JQuery 的Effects 效果
- 【每日一文101111】美言
- 循环插入500条数据
- 未来计划
- Android最佳学习方法
- 多个jmeter命令行实例需要注意的
- 敏捷需求分析五大关键因素
- asp.net 等比例 生成 高清图片