Castle ActiveRecord 学习 123

可以先设计类,也可以先设计数据库,利用Castle.ActiveRecord.Generator.exe可以生成实体类,不过有些关系复杂的父子表 生成的代码要手动修改,此bug已经提交了 For complex mappings, HasMany is being generated incorrectly 

有了实体类,还需要进行一些简单必要的配置,其实就是配置NHibernate的一些参数

<?xml version="1.0" encoding="utf-8" ?>
<activerecord>
  <config>
    <add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider" />
    <add key="hibernate.dialect" value="NHibernate.JetDriver.JetDialect, NHibernate.JetDriver" />
    <add key="hibernate.connection.driver_class" value="NHibernate.JetDriver.JetDriver, NHibernate.JetDriver" />
    <add key="hibernate.connection.connection_string" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|/xxx.mdb" />
      </config>
  </activerecord>

存在  config/appconfig.xml 里面

 

进行castle的初始化,建议放在global.asa里面的

void Application_BeginRequest(object sender, EventArgs e)
    {
        ActiveRecordStarter.Initialize(
            typeof(YourClassName).Assembly,
            new XmlConfigurationSource(this.Server.MapPath("~/config/appconfig.xml"))
            );
    }


此时,你就可以非常方便的利用Castle AR 来进行CRUD操作了。

有一个Message实体类,n个属性,把它所有的取出来绑定到一个GridView上面

IList msgs = Message.FindAll() as IList;           
GridViewMsg.DataSource = msgs;
GridViewMsg.DataBind();

取出主键等于某个值的一条记录,其实就是取回一个对象

Message msg = Message.Find(287);
txtCreateDate = msg.CreateDate.ToString(); //一个TextBox控件

就是这样使用,如果要更新它,即改变了它的值
msg.CreateDate = DataTime.Now;

执行
Castle.ActiveRecord.ActiveRecordMediator.Update(msg);  //就更新了这条记录

Castle.ActiveRecord.ActiveRecordMediator.Delete(msg);   //删除这条记录

对于新增,也很简单,

           Message msg = new Message();
            msg.Fromwho = "guilei";
            msg.Msg = "test1234";
            msg.Towho = "jwc";
            msg.Grade = "1";
            msg.Title = "just a test";
            msg.Flag = 0;
            msg.Wtime = DateTime.Now.ToString();
            try
            {
                msg.Create();                      //这样就是新增一条记录了
            }
            catch(Exception ex)
            {
                //log.Error("Error while setting up the database schema, ignoring the fixture", ex);
            }

对于有关系的比如父子表之类的,在实体类里面都描述好了,级联更新删除Castle都能自动的帮你完成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值