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。