zoukankan      html  css  js  c++  java
  • Castle ActiveRecord学习实践(1)入门

    首先什么是Active Record

    Active Record 是一种领域模型的设计模式,特点是关系数据库中的每张表都对应一个模型类。业务对象表示数据表中的一行记录,并且包含数据,行为以及持久化该对象的工具。每个业务对象均负责自己的持久化和相关的业务逻辑。

    Active Record 适用于:

    业务逻辑比较简单;数据模型和业务模型之间具有一对一映射关系的简单应用程序。因为业务对象与数据库中的表具有一对一的映射关系,均具有相同的创建、读取、更新和删除(CRUD)方法,可以使用代码生成工具自动生成业务模型。

    Castle ActiveRecord

    Castle ActiveRecord是最流行的开放源代码的Active Record框架之一,它本身基于NHibernate,只是封装了NHibernate的大部分繁杂的细节,对需要持久化的类,只需要继承自NHibernate,再对类的属性赋予正确的 Attribute。

    下载地址:http://www.castleproject.org/ 看清楚是Castle ActiveRecord

    一个简单的例子

    以一个博客作为demo 2张数据表 post comment

    数据表放到附件里面

    建立 Comment Post 类

     1     [ActiveRecord("Comments")]
     2     public class Comment:ActiveRecordBase<Comment>
     3     {
     4         [PrimaryKey("CommentId")]
     5         public int Id { get; set; }
     6 
     7         [Property]
     8         public string Text { get; set; }
     9 
    10         [Property]
    11         public string Author { get; set; }
    12 
    13         [Property]
    14         public DateTime DateAdded { get; set; }
    15 
    16         [BelongsTo("PostId")]
    17         public Post Post { get; set; }
    18 
    19     }
     1     [ActiveRecord("Posts")]
     2     public class Post:ActiveRecordBase<Post>
     3     {
     4         [PrimaryKey("PostId")]
     5         public int Id { get; set; }
     6 
     7         [Property]
     8         public string Subject { get; set; }
     9 
    10         [Property]
    11         public string Text { get; set; }
    12 
    13         [Property]
    14         public DateTime DateAdded { get; set; }
    15 
    16         [HasMany]
    17         public IList<Comment> Comments { get; set; }
    18 
    19           
    20     }

    2个类都继承自ActiveRecordBase,类的属性用特性修饰,Castle ActiveRecord保证了类的属性和数据库表的列相匹配。

    配置文件的设置

     1 <configSections>
     2     <section name="activeRecord" type="Castle.ActiveRecord.Framework.Config.ActiveRecordSectionHandler,Castle.ActiveRecord"/>
     3   </configSections>
     4   <activeRecord isWeb="true">
     5     <config>
     6       <add key="hibernate.connection.driver_class" value="NHibernate.Driver.SqlClientDriver"/>
     7       <add key="dialect" value="NHibernate.Dialect.MsSql2005Dialect"/>
     8       <add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/>
     9       <add key="connection.connection_string" value="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Blog.mdf;Integrated Security=True;User Instance=True"/>
    10       <add key="proxyfactory.factory_class" value="NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle"/>
    11     </config>
    12   </activeRecord>

    Global文件

    1         protected void Application_Start(object sender, EventArgs e)
    2         {
    3             IConfigurationSource source = ConfigurationManager.GetSection("activeRecord") as IConfigurationSource;
    4             Castle.ActiveRecord.ActiveRecordStarter.Initialize(source, typeof(Post), typeof(Comment));
    5         }

    附件 Castle.zip

  • 相关阅读:
    快速导出B站收藏单节目列表
    打包Python程序
    PHP应用日志记录
    这几天折腾win10访问deepin共享的历程
    PHP更新本地公网IP到阿里云域名解析,实现DDNS
    PHP.ini 能不能加载子配置文件 ?
    PHP处理表单数据的一个安全回顾(记录教训)
    不用U盘,用一台好电脑给另一个电脑重装windows10
    方正 ignb路由器设置备份(自用笔记)
    Xiuno BBS 4.0 修改时间显示
  • 原文地址:https://www.cnblogs.com/whx1973/p/2715937.html
Copyright © 2011-2022 走看看