导航

在VS 2005 下搭建Castle Active Record + Access 开发环境实例

Posted on 2007-03-31 00:17  人品的天空  阅读(1653)  评论(9)    收藏  举报

由于为了连接Access数据库,需要NHibernateContrib,目前下载到的版本是NHibernateContrib-1.0.4.0,其中的NHibernate也是1.0.4.0版。
而Castle-net-2.0-rc2中所带的ActiveRecord引用的NHibernate是1.0.2.0版,所以首先要重新编译ActiveRecord。

打开Castle-net-2.0-rc2源码中的ActiveRecord解决方案。
 把引用替换为NHibernateContrib-1.0.4.0所带的NHibernate.dll,记得去掉AssemblyInfo.cs里的[assembly: AssemblyKeyFileAttribute("../../CastleKey.snk")]才能编译。

然后在VS2005中新建一个Asp.Net站点,引用Castle.ActiveRecord,NHibernate,NHibernate.JetDriver。
然后编写一个TestUser类

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Castle.ActiveRecord;

/// <summary>
/// TestUser 的摘要说明
/// </summary>


[ActiveRecord(
"TestUsers")]
public class TestUser : ActiveRecordBase<TestUser>
{
    
public TestUser()
    
{
        
        
//
        
// TODO: 在此处添加构造函数逻辑
        
//
    }


    
private long _Id;
    
private string _UserName;

    [PrimaryKey]
    
public long Id
    
{
        
get return _Id; }
        
set { _Id = value; }
    }


    [Property(
"username", NotNull=true, Length=25)]
    
public string UserName
    
{
        
get return _UserName; }
        
set { _UserName = value; }
    }


}


在Web.Config中添加以下配置:
注:所用的Access数据库文件data.mdb放在App_Data目录下
  <configSections>
    
<section name="activerecord" type="Castle.ActiveRecord.Framework.Config.ActiveRecordSectionHandler, Castle.ActiveRecord"/>
  
</configSections>
  
<activerecord isWeb="true">
    
<config>
      
<add key="hibernate.connection.driver_class" value="NHibernate.JetDriver.JetDriver, NHibernate.JetDriver"/>
      
<add key="hibernate.dialect" value="NHibernate.JetDriver.JetDialect, NHibernate.JetDriver"/>
      
<add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/>
      
<add key="hibernate.connection.connection_string" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|data.mdb"/>
    
</config>
  
</activerecord>

在Global.asax的Application_Start方法中输入以下代码:
    void Application_Start(object sender, EventArgs e) 
    
{
        
// 在应用程序启动时运行的代码
        Castle.ActiveRecord.Framework.IConfigurationSource source = System.Configuration.ConfigurationManager.GetSection("activerecord"as Castle.ActiveRecord.Framework.IConfigurationSource;
        Castle.ActiveRecord.ActiveRecordStarter.Initialize(
typeof(TestUser).Assembly, source);
    }

之后就可以程序中使用了,例如:
public partial class _Default : System.Web.UI.Page
{
    
protected void Page_Load(object sender, EventArgs e)
    
{

    }

    
protected void Button1_Click(object sender, EventArgs e)
    
{
        ActiveRecordStarter.CreateSchema();
    }

    
protected void Button2_Click(object sender, EventArgs e)
    
{
        TestUser user 
= new TestUser();
        user.UserName 
= "test";
        user.Save();
    }

}

页面上2个按钮,分别进行生成数据库和添加一条记录