用户操作
[即时聊天] [发私信] [加为好友]
阿呆ID:daqingshu
22616次访问,排名5250(-1)好友0人,关注者0
daqingshu的文章
原创 14 篇
翻译 0 篇
转载 23 篇
评论 5 篇
阿呆的公告
还是喜欢那一片幽静 致远的地方 真的好舒服吗? 等到我去的时候 你还是那样美丽吗?
Q俺 Free Counter
Free Counter
最近评论
hero19851205:又是和别人一样的东西
文章分类
收藏
相册
Blogs
存档
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes

原创 Castle ActiveRecord 学习 123收藏

新一篇: TRULY Understanding ViewState  | 旧一篇: asp.net2.0 GridView使用小记

可以先设计类,也可以先设计数据库,利用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都能自动的帮你完成

发表于 @ 2006年03月26日 01:42:00|评论(loading...)|编辑

新一篇: TRULY Understanding ViewState  | 旧一篇: asp.net2.0 GridView使用小记

评论:没有评论。

发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © 阿呆