• Castle.ActiveRecord的ProxyFactory配置


      前后差不多两年没使用过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 { getset; }

        [Property(
    "Sex", Length = 50)]
        
    public string Sex { getset; }

        [Property(
    "Name", NotNull = true)]
        
    public string Name { getset; }
    }

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

    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进行某些控制,暂时没有时间研究,期待有研究过的朋友分享,谢谢。

  • 相关阅读:
    .NET C#模仿Windows方式打开指定文件所在的文件夹,并定位到文件【加强版】
    .NET C#执行程序功能时根据Windows用户角色动态提权执行相关业务功能的方法
    .NET C#实现string类型List<T>二分查找算法功能(支持Contains模糊匹配)
    由于定时模块的错误导致系统无法启动
    mongodb执行js命令
    查看mongodb执行命令耗时
    es设置translog保留时间
    mongodb设置开机自启动
    python写数据到elasticsearch
    es查询相关
  • 原文地址:https://www.cnblogs.com/beniao/p/1886472.html
Copyright © 2020-2023  润新知