zoukankan      html  css  js  c++  java
  • Castle ActiveRecord 3.0RC 入门示例

    参考文档

    一、引用类库

    二、配置

      本示例通过加载xml文件实现配置,其它配置方式请看“参考文档”

      本例配置为 : mysql.xml   内容如下:

    View Code
     1 <?xml version="1.0" encoding="utf-8" ?>
     2 <activerecord>
     3 
     4   <config>
     5     <add
     6       key="connection.driver_class"
     7       value="NHibernate.Driver.MySqlDataDriver" />
     8     
     9     <add
    10       key="dialect"
    11       value="NHibernate.Dialect.MySQLDialect" />
    12     
    13     <add
    14       key="connection.provider"
    15       value="NHibernate.Connection.DriverConnectionProvider" />
    16     
    17     <add
    18       key="connection.connection_string"
    19       value="Data Source=localhost;Database=mydb;User Id=root;Password=" />
    20     
    21     <add key="proxyfactory.factory_class"        
    22          value="NHibernate.ByteCode.Castle.ProxyFactoryFactory,NHibernate.ByteCode.Castle" />
    23   </config>
    24 
    25 </activerecord>

    三、手动创建数据库(略)

    四、创建一个实体类

    View Code
     1 using Castle.ActiveRecord;
     2 
     3 namespace ARLibs.Classes
     4 {
     5     [ActiveRecord(Table = "wp_product")]
     6     public class Product : ActiveRecordBase<Product>
     7     {
     8         private int id;
     9         private string name;
    10 
    11 
    12         [PrimaryKey(PrimaryKeyType.Native)]
    13         public int Id
    14         {
    15             get { return id; }
    16             set { id = value; }
    17         }
    18         [Property]
    19         public string Name
    20         {
    21             get { return name;}
    22             set { name = value; }
    23         }
    24     }
    25 }

    五、初始化

    基本方法是先初始化AR,然后就调用写的实体类,本示例将初始化写在一个静态类里

    (注意:本示例静态类BootStrap所在的程序集包含了AR类,如Product

    View Code
    using System;
    
    namespace ARLibs
    {
        public static class BootStrap
        {
    
            public static void Start(String xmlfile, bool IsNew)
            {
                Castle.ActiveRecord.Framework.IConfigurationSource cfg = null;
                try
                {
                    //加载xml文件作为配置
                    cfg = new Castle.ActiveRecord.Framework.Config
                            .XmlConfigurationSource(xmlfile);
                    //初始化AR
                    //将指定程序集里的activerecord初始化
                    Castle.ActiveRecord.ActiveRecordStarter
                        .Initialize(typeof(BootStrap).Assembly, cfg);
                    if (IsNew)
                    {
                        //在数据库中创建表(如果数据库时存在此表将会先删掉再新建,会造成数据丢失)
                        Castle.ActiveRecord.ActiveRecordStarter.CreateSchema();
                        //建议用CreateScheamaFromfile("x.sql")
    
                    }
                }
                catch (Exception ex) { throw ex; }
    
            }
        }
    }

    六、使用继承来的方法执行CRUD操作

      测试方法如下:

    View Code
     1 [TestMethod()]
     2         public void ProductTest()
     3         {
     4             //本示例的配置文件复制在执行目录下的Configs目录下
     5             //建议:初始化工作可以统一放到程序启动事件中(如asp.net 的app_start事件,winform的form_load事件)以免每次使用时都去重复初始化。
     6             string basepath = AppDomain.CurrentDomain.BaseDirectory;
     7             BootStrap.Start(basepath+@"\Configs\mysql.xml",true);
     8             Product p = new Product();
     9             p.Name = "Iphone 4s";
    10             p.Save();
    11             Assert.AreEqual("Iphone 4s", Product.FindFirst().Name);
    12         }

    七、注意事项

  • 相关阅读:
    codeforces 980A Links and Pearls
    zoj 3640 Help Me Escape
    sgu 495 Kids and Prizes
    poj 3071 Football
    hdu 3853 LOOPS
    hdu 4035 Maze
    hdu 4405 Aeroplane chess
    poj 2096 Collecting Bugs
    scu 4444 Travel
    zoj 3870 Team Formation
  • 原文地址:https://www.cnblogs.com/loxen/p/2951090.html
Copyright © 2011-2022 走看看