一、引用类库
二、配置
本示例通过加载xml文件实现配置,其它配置方式请看“参考文档”
本例配置为 : mysql.xml 内容如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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>
三、手动创建数据库(略)
四、创建一个实体类
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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操作
测试方法如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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 }
七、注意事项