Castle ActiveRecord学习实践(9):使用ActiveRecord的一些技巧
2007-07-03 09:36
816 查看
摘要:本文将会介绍使用ActiveRecord中的一些技巧。
主要内容
1.由实体类生成数据表
2.运行存在的SQL脚本
3.使用空属类型
4.使用枚举类型的属性
5.使用NHibernate中的日志记录
一.由实体类生成数据表
在前面所用到的例子中我们都是先有数据表结构,然后才有实体类,然而这会让很多朋友认为ORM怎么变成了ROM了,其实这只是我们平时的一个开发时的习惯问题,ActiveRecord是支持先有实体类,再由实体类生成数据库表。只不过我们可以在开发中根据项目的实际情况在这两种之间选择。看下面的代码,要生成数据库表结构,在实体类中需要多提供一些信息,是否为空,字段长度等。
ActiveRecordStarter.CreateSchema()方法就可以了。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
[ActiveRecord("Blogs")]
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
public class Blog : ActiveRecordBase
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/d697c7f940cec91d060a69b7d6bfbabe.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/78506ac88f008ceb6ff777ee2bfd9158.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
private int _id;
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
private String _name;
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
private String _author;
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
[PrimaryKey(PrimaryKeyType.Native, "blog_id")]
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
public int Id
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/b19221674ccfeaa2be2f33591a26176a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/31fdd64eccd12495cef6cc0af57acfb4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/b19221674ccfeaa2be2f33591a26176a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/31fdd64eccd12495cef6cc0af57acfb4.gif)
get
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{ return _id; }
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/b19221674ccfeaa2be2f33591a26176a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/31fdd64eccd12495cef6cc0af57acfb4.gif)
set
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{ _id = value; }
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a5a207152d50285d2b642f684cd16367.gif)
}
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
[Property("blog_name", NotNull=true, Length=25)]
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
public String Name
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/b19221674ccfeaa2be2f33591a26176a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/31fdd64eccd12495cef6cc0af57acfb4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/b19221674ccfeaa2be2f33591a26176a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/31fdd64eccd12495cef6cc0af57acfb4.gif)
get
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{ return _name; }
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/b19221674ccfeaa2be2f33591a26176a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/31fdd64eccd12495cef6cc0af57acfb4.gif)
set
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{ _name = value; }
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a5a207152d50285d2b642f684cd16367.gif)
}
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
[Property("blog_author", NotNull=true, Length=50)]
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
public String Author
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/b19221674ccfeaa2be2f33591a26176a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/31fdd64eccd12495cef6cc0af57acfb4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/b19221674ccfeaa2be2f33591a26176a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/31fdd64eccd12495cef6cc0af57acfb4.gif)
get
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{ return _author; }
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/b19221674ccfeaa2be2f33591a26176a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/31fdd64eccd12495cef6cc0af57acfb4.gif)
set
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{ _author = value; }
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a5a207152d50285d2b642f684cd16367.gif)
}
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/f05bd14f49ac5a6f43870a45f107e35f.gif)
}
要生成数据库表需要调用
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
public void Initli()
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/d697c7f940cec91d060a69b7d6bfbabe.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/78506ac88f008ceb6ff777ee2bfd9158.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
XmlConfigurationSource source = new XmlConfigurationSource("MyConfig.xml");
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
ActiveRecordStarter.Initialize( source, typeof(Blog),typeof(Post),typeof(Custom));
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
ActiveRecordStarter.CreateSchema();
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/f05bd14f49ac5a6f43870a45f107e35f.gif)
}
这里需要注意两点:
1.生成数据库表时只有当该表不存在时ActiveRecord才会生成,否则表如果存在ActiveRecord不会做任何事情,也不会报任何错误。
2.如果在实体类中没有指定字段的长度和是否为空,则默认生成的字段是允许为空的,且字符类生成后的字段类型为Nvarchar,长度为255。
二.运行存在的SQL脚本
有时候我们会想在ActiveRecord框架启动时运行一个已经存在的SQL脚本来生成数据库表结构,ActiveRecord同样也提供了这样的功能,通过调用ActiveRecordStarter.CreateSchemaFromFile()来实现。示例代码如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
public void Initli()
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/d697c7f940cec91d060a69b7d6bfbabe.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/78506ac88f008ceb6ff777ee2bfd9158.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
XmlConfigurationSource source = new XmlConfigurationSource("MyConfig.xml");
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
ActiveRecordStarter.Initialize( source, typeof(Blog));
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
ActiveRecordStarter.CreateSchemaFromFile("MySqlScript.sql");
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/f05bd14f49ac5a6f43870a45f107e35f.gif)
}
[align=left] [/align]
三.使用空属类型
在进行数据库操作时,有时候需要进行空值的处理,在ActiveRecord中给我们提供了一组空属类型,可以方便的进行处理,比如可以这样写属性:
ActiveRecord提供的空属类型与实际类型对照表
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
[Property]
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
public NullableDateTime CreatedDate
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/d697c7f940cec91d060a69b7d6bfbabe.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/78506ac88f008ceb6ff777ee2bfd9158.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/b19221674ccfeaa2be2f33591a26176a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/31fdd64eccd12495cef6cc0af57acfb4.gif)
get
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{ return _createdDate; }
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/b19221674ccfeaa2be2f33591a26176a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/31fdd64eccd12495cef6cc0af57acfb4.gif)
set
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{ _createdDate = value; }
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/f05bd14f49ac5a6f43870a45f107e35f.gif)
}
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
[Property]
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
public NullableInt32 Count
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/d697c7f940cec91d060a69b7d6bfbabe.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/78506ac88f008ceb6ff777ee2bfd9158.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/b19221674ccfeaa2be2f33591a26176a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/31fdd64eccd12495cef6cc0af57acfb4.gif)
get
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{ return _count; }
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/b19221674ccfeaa2be2f33591a26176a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/31fdd64eccd12495cef6cc0af57acfb4.gif)
set
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{ _count = value; }
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/f05bd14f49ac5a6f43870a45f107e35f.gif)
}
看一下
注意在使用空属类型时需要添加以下引用
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
Nullables.dll
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
Nullables.NHibernate.dll
四.使用枚举类型属性
在ActiveRecord中我们可以定义一个属性的类型为枚举类型,示例代码:
StatusType属性时,可以这样赋值:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
public class Post : ActiveRecordBase
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/d697c7f940cec91d060a69b7d6bfbabe.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/78506ac88f008ceb6ff777ee2bfd9158.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
//
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
private StatusType _status_type_id;
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
public enum StatusType
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/b19221674ccfeaa2be2f33591a26176a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/31fdd64eccd12495cef6cc0af57acfb4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
Editing = 0,
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
Published = 1,
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
Archived = 2
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a5a207152d50285d2b642f684cd16367.gif)
}
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
[Property("status_id")]
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
public StatusType Status
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/b19221674ccfeaa2be2f33591a26176a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/31fdd64eccd12495cef6cc0af57acfb4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/b19221674ccfeaa2be2f33591a26176a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/31fdd64eccd12495cef6cc0af57acfb4.gif)
get
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{ return _status_type_id; }
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/b19221674ccfeaa2be2f33591a26176a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/31fdd64eccd12495cef6cc0af57acfb4.gif)
set
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{ _status_type_id = value; }
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a5a207152d50285d2b642f684cd16367.gif)
}
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/f05bd14f49ac5a6f43870a45f107e35f.gif)
}
在使用该实体类的
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
Post.Status = Post.StatusType.Archived;
五.使用NHibernate的日志记录
用过NHibernate的朋友都知道,NHibernate是用Log4net来记录日志的,在ActiveRecord中也可以通过简单的配置来使用Log4net记录。配置示例:
ActiveRecordStarter.Initialize()方法之前
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<?xml version="1.0" encoding="utf-8" ?>
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<configuration>
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<configSections>
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<section name="nhibernate" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" />
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<section name="activerecord" type="Castle.ActiveRecord.Framework.Config.ActiveRecordSectionHandler, Castle.ActiveRecord" />
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
</configSections>
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<activerecord>
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
</activerecord>
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<log4net>
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<!-- Define some output appenders -->
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<appener name="trace" type="log4net.Appender.TraceAppender, log4net">Õ
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<layout type="log4net.Layout.PatternLayout,log4net">
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] <%P{user}> - %m%n" />
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
</layout>
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
</appener>Õ
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<appener name="console" type="log4net.Appender.ConsoleAppender, log4net">Õ
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<layout type="log4net.Layout.PatternLayout,log4net">
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] <%P{user}> - %m%n" />
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
</layout>
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
</appener>Õ
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<appener name="rollingFile" type="log4net.Appender.RollingFileAppender,log4net">Õ
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<param name="File" value="log.txt" />
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<param name="AppendToFile" value="true" />
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<param name="RollingStyle" value="Date" />
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<param name="DatePattern" value="yyyy.MM.dd" />
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<param name="StaticLogFileName" value="true" />
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<layout type="log4net.Layout.PatternLayout,log4net">
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] <%X{auth}> - %m%n" />
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
</layout>
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
</appener>Õ
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<root>
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<!-- priority value can be set to ALL|INFO|WARN|ERROR -->
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<priority value="ALL" />
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<appener-ref ref="rollingFile" />Õ
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
</root>
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
</log4net>
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<nhibernate>
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<!-- with this set to true, SQL statements will output to the console window if it's a console app -->
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<add key="hibernate.show_sql" value="true" />
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
</nhibernate>
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
</configuration>
初始化配置在调用
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
public void Initli()
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/d697c7f940cec91d060a69b7d6bfbabe.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/78506ac88f008ceb6ff777ee2bfd9158.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
XmlConfigurationSource source = new XmlConfigurationSource("MyConfig.xml");
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
log4net.Config.XmlConfigurator.Configure();
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
ActiveRecordStarter.Initialize( source, typeof(Blog));
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/f05bd14f49ac5a6f43870a45f107e35f.gif)
}
六.Hooks
有时候我们会在保存,加载,删除等操作时做一些必需的处理,这时可以通过重载以下三个方法来实现:
比如说我们想在保存的时候设置Post的创建时间为当前时间,可以这样去写
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
BeforeSave(IDictionary state)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
BeforeLoad(IDictionary state)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
BeforeDelete(IDictionary state)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
protected override bool BeforeSave(IDictionary state)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/d697c7f940cec91d060a69b7d6bfbabe.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/78506ac88f008ceb6ff777ee2bfd9158.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
state["Created"] = DateTime.Now;
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
return true;
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/f05bd14f49ac5a6f43870a45f107e35f.gif)
}
[align=left] [/align]
本文就到这里了,同时本篇也是Castle ActiveRecord学习实践系列的最后一篇,过几天我会提供一个完整的ActiveRecord的例子程序。下面有时间我会继续写Castle中的其他部分,包括IOC及Facility,Aspect#,DynamicProxy等。
参考资料
文中很多内容来自于Castle的官方网站http://www.castleproject.org
主要内容
1.由实体类生成数据表
2.运行存在的SQL脚本
3.使用空属类型
4.使用枚举类型的属性
5.使用NHibernate中的日志记录
一.由实体类生成数据表
在前面所用到的例子中我们都是先有数据表结构,然后才有实体类,然而这会让很多朋友认为ORM怎么变成了ROM了,其实这只是我们平时的一个开发时的习惯问题,ActiveRecord是支持先有实体类,再由实体类生成数据库表。只不过我们可以在开发中根据项目的实际情况在这两种之间选择。看下面的代码,要生成数据库表结构,在实体类中需要多提供一些信息,是否为空,字段长度等。
ActiveRecordStarter.CreateSchema()方法就可以了。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
[ActiveRecord("Blogs")]
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
public class Blog : ActiveRecordBase
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/d697c7f940cec91d060a69b7d6bfbabe.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/78506ac88f008ceb6ff777ee2bfd9158.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
private int _id;
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
private String _name;
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
private String _author;
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
[PrimaryKey(PrimaryKeyType.Native, "blog_id")]
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
public int Id
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/b19221674ccfeaa2be2f33591a26176a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/31fdd64eccd12495cef6cc0af57acfb4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/b19221674ccfeaa2be2f33591a26176a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/31fdd64eccd12495cef6cc0af57acfb4.gif)
get
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{ return _id; }
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/b19221674ccfeaa2be2f33591a26176a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/31fdd64eccd12495cef6cc0af57acfb4.gif)
set
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{ _id = value; }
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a5a207152d50285d2b642f684cd16367.gif)
}
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
[Property("blog_name", NotNull=true, Length=25)]
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
public String Name
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/b19221674ccfeaa2be2f33591a26176a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/31fdd64eccd12495cef6cc0af57acfb4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/b19221674ccfeaa2be2f33591a26176a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/31fdd64eccd12495cef6cc0af57acfb4.gif)
get
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{ return _name; }
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/b19221674ccfeaa2be2f33591a26176a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/31fdd64eccd12495cef6cc0af57acfb4.gif)
set
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{ _name = value; }
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a5a207152d50285d2b642f684cd16367.gif)
}
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
[Property("blog_author", NotNull=true, Length=50)]
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
public String Author
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/b19221674ccfeaa2be2f33591a26176a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/31fdd64eccd12495cef6cc0af57acfb4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/b19221674ccfeaa2be2f33591a26176a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/31fdd64eccd12495cef6cc0af57acfb4.gif)
get
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{ return _author; }
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/b19221674ccfeaa2be2f33591a26176a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/31fdd64eccd12495cef6cc0af57acfb4.gif)
set
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{ _author = value; }
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a5a207152d50285d2b642f684cd16367.gif)
}
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/f05bd14f49ac5a6f43870a45f107e35f.gif)
}
要生成数据库表需要调用
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
public void Initli()
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/d697c7f940cec91d060a69b7d6bfbabe.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/78506ac88f008ceb6ff777ee2bfd9158.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
XmlConfigurationSource source = new XmlConfigurationSource("MyConfig.xml");
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
ActiveRecordStarter.Initialize( source, typeof(Blog),typeof(Post),typeof(Custom));
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
ActiveRecordStarter.CreateSchema();
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/f05bd14f49ac5a6f43870a45f107e35f.gif)
}
这里需要注意两点:
1.生成数据库表时只有当该表不存在时ActiveRecord才会生成,否则表如果存在ActiveRecord不会做任何事情,也不会报任何错误。
2.如果在实体类中没有指定字段的长度和是否为空,则默认生成的字段是允许为空的,且字符类生成后的字段类型为Nvarchar,长度为255。
二.运行存在的SQL脚本
有时候我们会想在ActiveRecord框架启动时运行一个已经存在的SQL脚本来生成数据库表结构,ActiveRecord同样也提供了这样的功能,通过调用ActiveRecordStarter.CreateSchemaFromFile()来实现。示例代码如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
public void Initli()
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/d697c7f940cec91d060a69b7d6bfbabe.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/78506ac88f008ceb6ff777ee2bfd9158.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
XmlConfigurationSource source = new XmlConfigurationSource("MyConfig.xml");
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
ActiveRecordStarter.Initialize( source, typeof(Blog));
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
ActiveRecordStarter.CreateSchemaFromFile("MySqlScript.sql");
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/f05bd14f49ac5a6f43870a45f107e35f.gif)
}
[align=left] [/align]
三.使用空属类型
在进行数据库操作时,有时候需要进行空值的处理,在ActiveRecord中给我们提供了一组空属类型,可以方便的进行处理,比如可以这样写属性:
ActiveRecord提供的空属类型与实际类型对照表
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
[Property]
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
public NullableDateTime CreatedDate
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/d697c7f940cec91d060a69b7d6bfbabe.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/78506ac88f008ceb6ff777ee2bfd9158.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/b19221674ccfeaa2be2f33591a26176a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/31fdd64eccd12495cef6cc0af57acfb4.gif)
get
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{ return _createdDate; }
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/b19221674ccfeaa2be2f33591a26176a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/31fdd64eccd12495cef6cc0af57acfb4.gif)
set
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{ _createdDate = value; }
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/f05bd14f49ac5a6f43870a45f107e35f.gif)
}
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
[Property]
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
public NullableInt32 Count
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/d697c7f940cec91d060a69b7d6bfbabe.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/78506ac88f008ceb6ff777ee2bfd9158.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/b19221674ccfeaa2be2f33591a26176a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/31fdd64eccd12495cef6cc0af57acfb4.gif)
get
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{ return _count; }
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/b19221674ccfeaa2be2f33591a26176a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/31fdd64eccd12495cef6cc0af57acfb4.gif)
set
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{ _count = value; }
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/f05bd14f49ac5a6f43870a45f107e35f.gif)
}
看一下
[align=center]CLR Basic Type [/align] | [align=center]Nullable Type [/align] |
[align=center]System.Boolean [/align] | [align=left]Nullables.NullableBoolean [/align] |
[align=center]System.Byte [/align] | [align=left]Nullables.NullableByte [/align] |
[align=center]System.Char [/align] | [align=left]Nullables.NullableChar [/align] |
[align=center]System.DateTime [/align] | [align=left]Nullables.NullableDateTime [/align] |
[align=center]System.Decimal [/align] | [align=left]Nullables.NullableDecimal [/align] |
[align=center]System.Double [/align] | [align=left]Nullables.NullableDouble [/align] |
[align=center]System.Guid [/align] | [align=left]Nullables.NullableGuid [/align] |
[align=center]System.Int16 [/align] | [align=left]Nullables.NullableInt16 [/align] |
[align=center]System.Int32 [/align] | [align=left]Nullables.NullableInt32 [/align] |
[align=center]System.Int64 [/align] | [align=left]Nullables.NullableInt64 [/align] |
[align=center]System.SByte [/align] | [align=left]Nullables.NullableSByte [/align] |
[align=center]System.Single [/align] | [align=left]Nullables.NullableSingle [/align] |
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
Nullables.dll
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
Nullables.NHibernate.dll
四.使用枚举类型属性
在ActiveRecord中我们可以定义一个属性的类型为枚举类型,示例代码:
StatusType属性时,可以这样赋值:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
public class Post : ActiveRecordBase
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/d697c7f940cec91d060a69b7d6bfbabe.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/78506ac88f008ceb6ff777ee2bfd9158.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
//
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
private StatusType _status_type_id;
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
public enum StatusType
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/b19221674ccfeaa2be2f33591a26176a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/31fdd64eccd12495cef6cc0af57acfb4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
Editing = 0,
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
Published = 1,
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
Archived = 2
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a5a207152d50285d2b642f684cd16367.gif)
}
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
[Property("status_id")]
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
public StatusType Status
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/b19221674ccfeaa2be2f33591a26176a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/31fdd64eccd12495cef6cc0af57acfb4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/b19221674ccfeaa2be2f33591a26176a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/31fdd64eccd12495cef6cc0af57acfb4.gif)
get
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{ return _status_type_id; }
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/b19221674ccfeaa2be2f33591a26176a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/31fdd64eccd12495cef6cc0af57acfb4.gif)
set
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{ _status_type_id = value; }
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a5a207152d50285d2b642f684cd16367.gif)
}
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/f05bd14f49ac5a6f43870a45f107e35f.gif)
}
在使用该实体类的
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
Post.Status = Post.StatusType.Archived;
五.使用NHibernate的日志记录
用过NHibernate的朋友都知道,NHibernate是用Log4net来记录日志的,在ActiveRecord中也可以通过简单的配置来使用Log4net记录。配置示例:
ActiveRecordStarter.Initialize()方法之前
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<?xml version="1.0" encoding="utf-8" ?>
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<configuration>
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<configSections>
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<section name="nhibernate" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" />
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<section name="activerecord" type="Castle.ActiveRecord.Framework.Config.ActiveRecordSectionHandler, Castle.ActiveRecord" />
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
</configSections>
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<activerecord>
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
</activerecord>
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<log4net>
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<!-- Define some output appenders -->
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<appener name="trace" type="log4net.Appender.TraceAppender, log4net">Õ
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<layout type="log4net.Layout.PatternLayout,log4net">
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] <%P{user}> - %m%n" />
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
</layout>
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
</appener>Õ
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<appener name="console" type="log4net.Appender.ConsoleAppender, log4net">Õ
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<layout type="log4net.Layout.PatternLayout,log4net">
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] <%P{user}> - %m%n" />
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
</layout>
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
</appener>Õ
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<appener name="rollingFile" type="log4net.Appender.RollingFileAppender,log4net">Õ
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<param name="File" value="log.txt" />
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<param name="AppendToFile" value="true" />
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<param name="RollingStyle" value="Date" />
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<param name="DatePattern" value="yyyy.MM.dd" />
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<param name="StaticLogFileName" value="true" />
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<layout type="log4net.Layout.PatternLayout,log4net">
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] <%X{auth}> - %m%n" />
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
</layout>
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
</appener>Õ
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<root>
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<!-- priority value can be set to ALL|INFO|WARN|ERROR -->
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<priority value="ALL" />
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<appener-ref ref="rollingFile" />Õ
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
</root>
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
</log4net>
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<nhibernate>
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<!-- with this set to true, SQL statements will output to the console window if it's a console app -->
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
<add key="hibernate.show_sql" value="true" />
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
</nhibernate>
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
</configuration>
初始化配置在调用
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
public void Initli()
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/d697c7f940cec91d060a69b7d6bfbabe.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/78506ac88f008ceb6ff777ee2bfd9158.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
XmlConfigurationSource source = new XmlConfigurationSource("MyConfig.xml");
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
log4net.Config.XmlConfigurator.Configure();
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
ActiveRecordStarter.Initialize( source, typeof(Blog));
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/f05bd14f49ac5a6f43870a45f107e35f.gif)
}
六.Hooks
有时候我们会在保存,加载,删除等操作时做一些必需的处理,这时可以通过重载以下三个方法来实现:
比如说我们想在保存的时候设置Post的创建时间为当前时间,可以这样去写
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
BeforeSave(IDictionary state)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
BeforeLoad(IDictionary state)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
BeforeDelete(IDictionary state)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
protected override bool BeforeSave(IDictionary state)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/a6269e9e4e1e1e402c7d02950e376da4.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/d697c7f940cec91d060a69b7d6bfbabe.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/78506ac88f008ceb6ff777ee2bfd9158.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200707/2149273624cba50f4a277a93cb6d22f3.gif)
{
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
state["Created"] = DateTime.Now;
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
return true;
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/c8d2e4b59017133d33aed64f31183d35.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201102/f05bd14f49ac5a6f43870a45f107e35f.gif)
}
[align=left] [/align]
本文就到这里了,同时本篇也是Castle ActiveRecord学习实践系列的最后一篇,过几天我会提供一个完整的ActiveRecord的例子程序。下面有时间我会继续写Castle中的其他部分,包括IOC及Facility,Aspect#,DynamicProxy等。
参考资料
文中很多内容来自于Castle的官方网站http://www.castleproject.org
相关文章推荐
- C#.Net Castle ActiveRecord学习实践(9):使用ActiveRecord的一些技巧
- Castle ActiveRecord学习实践(9):使用ActiveRecord的一些技巧
- Castle ActiveRecord学习实践(9):使用ActiveRecord的一些技巧
- Castle ActiveRecord学习实践(7):使用HQL查询
- Castle ActiveRecord学习实践(10)——使用多数据库
- Spring MVC学习总结(6)——一些Spring MVC的使用技巧
- Castle ActiveRecord学习实践(10):深度分析Schema Pitfals
- Castle ActiveRecord学习实践(2):构建配置信息
- Castle ActiveRecord学习实践(6):延迟加载和使用Where子句
- Castle ActiveRecord学习实践(11)——ActiveRecordMediator
- Castle ActiveRecord学习实践4---转
- Castle ActiveRecord学习实践(6)延迟加载
- Castle ActiveRecord学习实践(1):映射基础
- C#.Net Castle ActiveRecord学习实践(7):使用HQL查询
- 或许你不知道的10条SQL技巧 原创 2017-07-16 58沈剑 架构师之路 这几天在写索引,想到一些有意思的TIPS,希望大家有收获。 一、一些常见的SQL实践 (1)负向条件查询不能使用索
- Castle ActiveRecord学习实践(2):构建配置信息
- Castle ActiveRecord学习实践(10):深度分析Schema Pitfals
- Castle ActiveRecord学习实践
- Castle ActiveRecord学习实践(1):快速入门指南
- Castle ActiveRecord学习实践(1):快速入门指南