设为首页 加入收藏

TOP

[Nhibernate]SchemaExport工具的使用(二)――创建表及其约束、存储过程、视图(一)
2014-11-23 17:33:34 】 浏览:513
Tags:Nhibernate SchemaExport 工具 使用 创建 及其 约束 存储 过程 视图
通过上篇文章我们已经知道SchemaEport工具是根据映射文件来生成 数据库的,在映射文件中通过Class映射可以很方便的生成数据库表。为了更清楚的说明,这篇文章我们新建两个实体类CategorySchema和ProductSchema,他们是一对多的关系。
实体类代码
复制代码
1 ///
2 /// 描述:SchemaExport工具测试用目录实体,数据库持久化类
3 /// 创建人:wolfy
4 /// 创建时间:2014-10-16
5 ///
6 public class CategorySchema
7 {
8 ///
9 /// 目录标识
10 ///
11 public virtual Guid ID { get; set; }
12 ///
13 /// 目录名称
14 ///
15 public virtual string Name { get; set; }
16 }
17 ///
18 /// 描述:SchemaExport工具测试用商品实体,数据库持久化类
19 /// 创建人:wolfy
20 /// 创建时间:2014-10-16
21 ///
22 public class ProductSchema
23 {
24 ///
25 /// 商品标识
26 ///
27 public virtual Guid ID { get; set; }
28 ///
29 /// 商品名称
30 ///
31 public virtual string Name { get; set; }
32 ///
33 /// 存储单元
34 ///
35 public virtual int UnitsOnStock { get; set; }
36 ///
37 /// 所属目录
38 ///
39 public virtual CategorySchema CategorySchema { get; set; }
40 }
复制代码
编写映射文件
ProductSchema.hbm.xml
复制代码
1 < xml version="1.0" encoding="utf-8" >
2
3 assembly="Wolfy.Shop.Domain" namespace="Wolfy.Shop.Domain.Entities">
4
5
6
7
8
9
10
11 class="Wolfy.Shop.Domain.Entities.ProductSchema,Wolfy.Shop.Domain"/>
12
13
复制代码
CategorySchema.hbm.xml
复制代码
1 < xml version="1.0" encoding="utf-8" >
2
3 assembly="Wolfy.Shop.Domain" namespace="Wolfy.Shop.Domain.Entities">
4
5
6
7
8
9
10
11
复制代码
在SchemaExportFixture类中添加测试代码
public void ExecuteSchemaTest()
{
var export = new SchemaExport(_cfg);
export.Execute(true, true, false);
}
生成的sql语句
通过查看生成的语句,你会发现都按默认的值生成了表,Name列字符串类型NVARCHAR(255),默认为null;外键默认一数字字符串等。
设置非空类型和长度
在映射文件中为ProductSchema实体的Name属性添加:not-null="true"表示非空类型,length="50":列长度设置为50,代码片段如下:
测试,生成的sql语句如下
1 create table ProductSchema
2 (ID uniqueidentifier not null unique,
3 Name NVARCHAR(50) not null,
4 CategorySchema UNIQUEIDENTIFIER null,
5 primary key (ID))
设置外键约束
在映射文件设置外键名称,注意有的需要两边都要设置才生效,代码片段如下:
1
2 class="Wolfy.Shop.Domain.Entities.ProductSchema,Wolfy.Shop.Domain"
3 foreign-key="FK_CategorySchema_ProductSchema" />
测试,生成的sql语句如下
1 alter table ProductSchema add constraint FK_CategorySchema_ProductSchema foreign key (CategorySchema) references ProductSchema
通过sql语句也看到生成的外键名称为映射文件中设置的名称,如果在映射文件中不设置,则生成的外键名称为FK+随机的数字和字母字符串。
设置Unique约束
我们要求Name字段唯一,添加Unique约束,代码片段如下:
1
生成的sql为
1 create table ProductSchema
2 (ID uniqueidentifier not null unique,
3 Name NVARCHAR(50) not null unique,
4 CategorySchema UNIQUEIDENTIFIER null,
5 primary key (ID))
还有一种unique-key约束,同时为两个属性设置unique-key约束。设置跟unique约束类似,不再举例了。
设置索引Index
生成的sql语句
create index INX_Prodcut_Name on ProductSchema (Name)
设置check约束
我们为UnitsOnStock值设置大于等于0
生成的sql
1 create table ProductSchema
2 (ID uniqueidentifier not null unique,
3 Name NVARCHAR(50) not null unique,
4 UnitsOnStock INT null check( UnitsOnStock>=
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇spring mvc DispatcherServlet详.. 下一篇java32为md5加密

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目