在ASP.NET MVC4中配置Castle

 

   Castle是针对.NET平台的一个非常优秀的开源项目,重点是开源的哦。它在NHibernate的基础上进一步封装,其原理基本与NHibernate相同,但它较好地解决NHibernate的缺陷,从ORM(对象关系映射)IOC(inversion of control,控制反转)容器,再到web层的MVC框架,基本上包括整个开发过程的所有内容。

VS2013 MVC4+SQL Server 2008的环境下配置Castle可以简单分为如下4个步骤

(一)引用Castle,有两种方式

   可以直接使用Nuget直接下载Castle相关组件  Castle.ActiveRecord提供ORM,Castle.Core,Castle.Windsor

   如果有备份的dll文件,可以直接引用,但一定要引用NHibernate.dll

     

(二)配置webconfig

  

<section name="activerecord" type="Castle.ActiveRecord.Framework.Config.ActiveRecordSectionHandler, Castle.ActiveRecord"/>
这个section节点必须要位于webconfig的第一个子节点configSection里 否则就会报错
<!--注册Castle配置块,type指定ActiveRecord的程序集-->
  <configSections>
    <section name="activerecord" type="Castle.ActiveRecord.Framework.Config.ActiveRecordSectionHandler, Castle.ActiveRecord"/>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <activerecord isWeb="true">
    <config>
      <!--配置数据库类型为SQL Server-->
      <add key="connection.driver_class" value="NHibernate.Driver.SqlClientDriver" />
      <!--配置数据库语言为SQL Server 2008-->
      <add key="dialect" value="NHibernate.Dialect.MsSql2008Dialect" />
      <!--配置数据库连接驱动-->
      <add key="connection.provider" value="NHibernate.Connection.DriverConnectionProvider" />
      <!--数据库连接字符串-->
      <add key="proxyfactory.factory_class" value="NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle" />
      <add key="connection.connection_string" value="server=.;database=LMS;integrated security=true;" providerName="System.Data.SqlClient" />
    </config>
  </activerecord>

 

(三)初始化Castle,生成数据库

   这里的做法有很多,在页面初始化时进行或者新建一个事件也是可以的

   比如在单独的一个aspx页面的click事件里进行:

    

    protected void btnCreate_Click(object sender, EventArgs e)
        {
            try
            {
                if (!ActiveRecordStarter.IsInitialized)
                {
                    IConfigurationSource source = System.Configuration.ConfigurationSettings.GetConfig("activerecord") 
                        as IConfigurationSource;
            //activerecord字符串要与<section name="activerecord">对应 Type[] param
={typeof(Domain.Years), typeof(Domain.Dog), typeof(Domain.Cat)};//映射类 通过数组参数一次性添加 ActiveRecordStarter.Initialize(source, param);//映射 ActiveRecordStarter.CreateSchema();//生成数据库 ActiveRecordStarter.GenerateCreationScripts("create.sql"); this.ClientScript.RegisterStartupScript(Page.GetType(), "", "<script>alert('创建成功')</script>"); } else { this.ClientScript.RegisterStartupScript(Page.GetType(), "", "<script>alert('创建失败')</script>"); } } catch (Exception ex) { throw ex; } } }

 这样就完成了Castle的配置了

 

ps 对象关系映射中要注意类要继承于Activerecord,和指定数据库表名  否则会映射失败

  

  [ActiveRecord()]//指定数据库表名,默认与类名相同
    public class Years:ActiveRecordBase
    {
        [Property]
        public string Name { get; set; }
    }

 

转载于:https://www.cnblogs.com/montana/p/6699644.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值