Welcome

首页 / 软件开发 / .NET编程技术 / Castle ActiveRecord学习实践(9) 使用ActiveRecord的一些技巧

Castle ActiveRecord学习实践(9) 使用ActiveRecord的一些技巧2011-02-03 cnblogs terrylee主要内容

1.由实体类生成数据表

2.运行存在的SQL脚本

3.使用空属类型

4.使用枚举类型的属性

5.使用NHibernate中的日志记录

一.由实体类生成数据表

在前面所用到的例子中我们都是先有数据表结构,然后才有实体类,然而这会让很多朋友认为ORM怎么变成了ROM了,其实这只是我们平时的一个开发时的习惯问题,ActiveRecord是支持先有实体类,再由实体类生成数据库表。只不过我们可以在开发中根据项目的实际情况在这两种之间选择。看下面的代码,要生成数据库表结构,在实体类中需要多提供一些信息,是否为空,字段长度等。

[ActiveRecord("Blogs")]
public class Blog : ActiveRecordBase
{
private int _id;
private String _name;
private String _author;

[PrimaryKey(PrimaryKeyType.Native, "blog_id")]
public int Id
{
get { return _id; }
set { _id = value; }
}

[Property("blog_name", NotNull=true, Length=25)]
public String Name
{
get { return _name; }
set { _name = value; }
}

[Property("blog_author", NotNull=true, Length=50)]
public String Author
{
get { return _author; }
set { _author = value; }
}
}

要生成数据库表需要调用ActiveRecordStarter.CreateSchema()方法就可以了。

public void Initli()
{
XmlConfigurationSource source = new XmlConfigurationSource("MyConfig.xml");
ActiveRecordStarter.Initialize( source, typeof(Blog),typeof(Post),typeof(Custom));
ActiveRecordStarter.CreateSchema();
}

这里需要注意两点:

1.生成数据库表时只有当该表不存在时ActiveRecord才会生成,否则表如果存在ActiveRecord不会做任何事情,也不会报任何错误。

2.如果在实体类中没有指定字段的长度和是否为空,则默认生成的字段是允许为空的,且字符类生成后的字段类型为Nvarchar,长度为255。