博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Castle.ActiveRecord的ProxyFactory配置
阅读量:6165 次
发布时间:2019-06-21

本文共 1957 字,大约阅读时间需要 6 分钟。

  前后差不多两年没使用过Castle.ActiveRecord做ORM了,也近两年没有关注Castle的版本变化了,最近关注了发现很多地方都改变了。今天在一个现有的小项目中尝试添加Castle.ActiveRecord来做数据持久化操作,以前不需要做ProxyFactory配置,现在必须要ProxyFactory配置。使用到了NHibernate.ByteCode.Castle.dll组件。

  ActoiveRecord的配置文件有了明显的变化,需要配置ProxyFactory才能完成持久化操纵,详细配置如下:

 <activerecord>

    <config>
      
<add key="connection.driver_class" value="NHibernate.Driver.SqlClientDriver"/>
      
<add key="dialect" value="NHibernate.Dialect.MsSql2000Dialect" />
      
<add key="connection.provider" value="NHibernate.Connection.DriverConnectionProvider" />
      
<add key="connection.connection_string" value="Data Source=SQL05;Initial Catalog=testdb;uid=sa;pwd=12345;" />
      
<add key="proxyfactory.factory_class" value="NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle"/>
    </config>
  
</activerecord>

 

  其他的使用基本上没有变化,下面是一个ORM的对象配置。

[ActiveRecord(
"
UserInfo
"
)]
public
 
class
 UserInfo : ActiveRecordBase
<
UserInfo
>
{
    [PrimaryKey(PrimaryKeyType.Identity, 
"
ID
"
)]
    
public
 
int
 ID { 
get
set
; }
    [Property(
"
Sex
"
, Length 
=
 
50
)]
    
public
 
string
 Sex { 
get
set
; }
    [Property(
"
Name
"
, NotNull 
=
 
true
)]
    
public
 
string
 Name { 
get
set
; }
}

  初始化配置也还是和以前的版本使用方式一样的,支持单个对象、多个对象、单个程序集、多个程序集等等不同方式的关系映射对象进行初始化。

protected
 
void
 Application_Start(
object
 sender, EventArgs e)
{
    IConfigurationSource source 
=
 ConfigurationManager.GetSection(
"
activerecord
"
as
 IConfigurationSource;
    
//
ActiveRecordStarter.Initialize(source, typeof(Entity.UserInfo));
    ActiveRecordStarter.Initialize(Assembly.Load(
"
Entity
"
), source);
}

  由于关系映射对象继承于ActiveRecordBase<T>泛型版本,因此可以直接基于关系映射对象使用数据持久化操纵行为,和老版本的使用方式是一样的。

protected
 
void
 Page_Load(
object
 sender, EventArgs e)
{
    
if
 (
!
IsPostBack)
    {
        UserInfo info 
=
 
new
 UserInfo();
        info.Name 
=
 
"
zhangsan
"
;
        info.Sex 
=
 
"
"
;
        
//
插入info数据到数据库中所映射的关系表
        info.Create();
    }
}

   至于ProxyFactory的具体作用暂时没有深入研究,也不知道AR为什么会在新版本中添加这个功能,我想应该是想通过NHibernate对Castle的AR进行某些控制,暂时没有时间研究,期待有研究过的朋友分享,谢谢。

本文转自 beniao 51CTO博客,原文链接:http://blog.51cto.com/beniao/437845,如需转载请自行联系原作者
你可能感兴趣的文章
关于ajax返回数据不进success函数
查看>>
迅雷、快车、QQ旋风下载链接解析
查看>>
google c++ 命名规范
查看>>
spring中常用注解
查看>>
Apache Configuration
查看>>
ssh反向代理访问内网
查看>>
Fedora19下编译安装mono及monodevelop
查看>>
MySQL5.7的zip解压包精简安装。
查看>>
Android开发前景展望
查看>>
吴伯凡-自我迭代与自我迭代的第一步--》模式识别(第一天更新)
查看>>
公司备份方案
查看>>
Linux常用命令集合
查看>>
Oracle DML
查看>>
Linux - FHS文件系统层次标准
查看>>
报错:Invalid bound statement (not found)
查看>>
Linux GPT分区格式磁盘的相关操作
查看>>
通过Docker进程pid获取容器id
查看>>
L15.2 zabbix基础(2)组件说明介绍
查看>>
impdp 常见问题 10g/11g/12c 问题解决 ERIKXUE
查看>>
2013年1月工作小结 -- 上线后的懈怠
查看>>