在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; }
    }
时间: 2024-08-03 18:36:49

在ASP.NET MVC4中配置Castle的相关文章

ASP.NET MVC4中的App_start中BundleConfig的介绍使用

在BundleConfig.cs中,指定CSS和JS,主要用来压缩JS和CSS   在ASP.NET MVC4中(在WebForm中应该也有),有一个叫做Bundle的东西,它用来将js和css进行压缩(多个文件可以打包成一个文件),并且可以区分调试和非调试,在调试时不进行压缩,以原始方式显示出来,以方便查找问题. 具体优势可自行百度或参看官方介绍:http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification 这里仅简单记录下如

Asp.Net MVC4开发二: Entity Framework在Asp.Net MVC4中的应用

ORM作为一种数据库访问机制已广泛地应用于各种项目当中,在.Net开发中,应用比较广泛的ORM框架大致有下面几个: 官方支持的有:Linq to SQL,Entity Framework.三方的有:NHibernate.前面介绍过Linq to SQL的应用,这篇介绍一下Entity Framework在Asp.Net MVC4中的应用. 首先用Visual Studio(2012或2013,其它版本需要安装Asp.Net MVC4)创建一个Asp.Net MVC4的项目,项目创建完成后会发现E

使用asp.net MVC4中的Bundle遇到的问题及解决办法分享

本文转自http://www.jb51.net/article/47264.htm 这篇文章主要介绍了使用asp.net MVC4中的Bundle遇到的问题及解决办法,需要的朋友可以参考下 背景    之前有过使用MVC3的经验,也建过MVC4的基本样例看过,知道有bundle这么一个方法. 近日想建个网站使用MVC4,但是我觉得在基本样例上改不好,有太多无用的东西,所以就建了一个空白的MVC的程序,然后自己写需要的东西, 将程序的目标框架从4.5降到了4.0(我使用的是VS2013),问题就来

asp.net mvc4中model与Model的区别

@model模型定义 使用@model关键字可以定义一个Action里所对应的一个模型(经常可以叫他实体类), 其实是对动态变量进行实例化,这样就可以直接在cshtml文件中调用“Model”变量. 而这个模型的实例,需要通过Controller进行传输,如果没有则“Model”将为null. 模型可以是一个实体类,也可以是一个列表实例,字典对象都可以进行定义,但是和 Controller中的Action传回来的实例一定要一样,否则将会出现错误. Model 定义 MVC的第一个字母M是Mode

ASP.NET MVC4中使用Ninject

1.NuGet获取Ninject.dll .NET技术交流群 199281001 .欢迎加入. 2.全局注册  Global.asax.cs 1 //注册Ninject依赖注入全局解析器 2 GlobalConfiguration.Configuration.DependencyResolver = new System.Web.Http.Dependencies.NinjectDependencyResolver(new Ninject.StandardKernel()); RegisterN

在ASP.NET MVC4中实现同页面增删改查,无弹出框02,增删改查界面设计

在上一篇"在ASP.NET MVC4中实现同页面增删改查,无弹出框01,Repository的搭建"中,已经搭建好了Repository层,本篇就剩下增删改查的界面了......今天的阳光真特么好,写完本篇,好出去在阳光下溜溜狗.散散步什么的,正所谓文武之道一张一弛,走神了,进入正题. 首先是一个View Model,在这里定义验证规则,提交和保存数据的时候还必须和领域模型映射. using System; using System.ComponentModel.DataAnnotat

ASP.NET MVC4中IOC应用的学习

Asp.net MVC也接触好久了,但由于自己一直主要负责后台,尤其是数据库方面的工作对于该框架并没有一个很好的了解,尤其是蒋金楠大师的ASP.NET MVC4框架剖析一书都买了2年多了,真正认真看过并实践过的也就第一章而已.最开始的时候还老认为这本书不好,又厚又晦涩,不容易坚持读完,现在回想起来都觉得羞愧.标准的徒弟不好怪师傅的心态,当然学习的确需要一个过程,从浅入深会越来越喜欢.到目前为止,我最喜欢的书籍系列依然是入门经典系列,内容简单有习题,方便记忆与实践.最近有一段学习JAVA的过程,让

在Asp.Net MVC 中配置 Serilog

Serilog 是一种非常简便记录log 的处理方式,使用Serilog可以生成本地的text文件, 也可以通过 Seq 来在Web界面中查看具体的log内容. 接下来就简单的介绍一下在Asp.Net MVC中如何配置是Serilog 生效: 1):下载并且安装Seq,具体的下载URL 为 [http://getseq.net/Download],安装到默认的路径之后,实际上时候启动了一个Win Service,并且监听的端口号默认为 5341. 安装的最后一步截图如下: 然后我们到Servic

ASP.NET MVC4中调用WEB API的四个方法

http://tech.it168.com/a2012/0606/1357/000001357231_all.shtml [IT168技术]当今的软件开发中,设计软件的服务并将其通过网络对外发布,让各种客户端去使用服务已经是十分普遍的做法.就.NET而言,目前提供了Remoting,WebService和WCF服务,这都能开发出功能十分强大的服务.然而,越来越多的互联网应用,希望将服务只是通过HTTP发布出去,而不是使用复杂的SOAP协议.为了解决这个问题,ASP.NET WebAPI就出现了.