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 -->
<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; }
}

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

  1. ASP.NET MVC4中使用NHibernate

    ASP.NET MVC4中使用NHibernate 1:下载安装NHibernate 打开 VS 2012新建一个 MVC4项目. 在项目名称上右击选择Manage NuGet Packages.你会 ...

  2. C#面试题(转载) SQL Server 数据库基础笔记分享(下) SQL Server 数据库基础笔记分享(上) Asp.Net MVC4中的全局过滤器 C#语法——泛型的多种应用

    C#面试题(转载) 原文地址:100道C#面试题(.net开发人员必备)  https://blog.csdn.net/u013519551/article/details/51220841 1. . ...

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

    在BundleConfig.cs中,指定CSS和JS,主要用来压缩JS和CSS   在ASP.NET MVC4中(在WebForm中应该也有),有一个叫做Bundle的东西,它用来将js和css进行压 ...

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

    ORM作为一种数据库訪问机制已广泛地应用于各种项目其中,在.Net开发中,应用比較广泛的ORM框架大致有以下几个: 官方支持的有:Linq to SQL.Entity Framework.三方的有:N ...

  5. ASP.NET MVC4中的bundles特性引发服务器拒绝访问(403错误)

    在ASP.NET MVC4中微软引入了bundles特性,这个特性可以将服务器端的多个Javascript或多个css文件捆绑在一起作为一个单一的URL地址供客户端浏览器调用,从而减少了页面上Http ...

  6. WebSocket在ASP.NET MVC4中的简单实现

    WebSocket在ASP.NET MVC4中的简单实现 2013-12-21 20:48 by 小白哥哥, 810 阅读, 3 评论, 收藏, 编辑 WebSocket 规范的目标是在浏览器中实现和 ...

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

    在上一篇"在ASP.NET MVC4中实现同页面增删改查,无弹出框01,Repository的搭建"中,已经搭建好了Repository层,本篇就剩下增删改查的界面了......今 ...

  8. ASP.NET MVC4中对JS和CSS的引用

    https://www.cnblogs.com/madyina/p/3702314.html ASP.NET MVC4中对JS和CSS的引用又做了一次变化,在MVC3中我们这样引用资源文件: < ...

  9. 在Asp.net MVC4 中使用SimpleMembershipProvider

    一.创建MVC4项目 运行Visual Studio Express 2012 for Web,新建ASP.NET MVC4 Web 应用程序,命名为“Demo”,选择空模版.这样就创建了一个干净的M ...

随机推荐

  1. Java创建对象的几种方式

    解析:Java创建对象的几种方式(重要):(1) 用new语句创建对象,这是最常见的创建对象的方法.(2) 运用反射手段,调用java.lang.Class或者java.lang.reflect.Co ...

  2. 项目架构开发:数据访问层之UnitOfWork

    接上文 项目架构开发:数据访问层之IQuery 本章我们继续IUnitOfWork的开发,从之前的IRepository接口中就可以看出,我们并没有处理单元事务, 数据CUD每次都是立即执行的,这样有 ...

  3. apicloud下拉刷新

    //下拉 apiready = function () { var param = {}; toDoRequest(); param.loadingImgae = 'widget://image/re ...

  4. 【解题报告】VijosP1448校门外的树(困难版)

    原题: 校门外有很多树,有苹果树,香蕉树,有会扔石头的,有可以吃掉补充体力的--如今学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的树,现有两个操作:K=1,K=1,读入l.r ...

  5. Linux实战教学笔记25:自动化运维工具之ansible (一)

    第二十五节 ansible之文件的批量分发 标签(空格分隔): Linux实战教学笔记-陈思齐 ---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品,允许转 ...

  6. Oralce Plsql 中文显示乱码问题无需修改注册表完美解决

    此方法在其它版系统也可以解决 win10-64 plsql oracle 11g绿色版客户端 错误现象: 因为oracle用的是绿色版,无法设置注册表,尝试以下方法. 解决方法: 1.在plsql中查 ...

  7. mybatis 使用@Select 注解,因为字符编码不一致导致mybatis 报错

    使用 mybatis 的@Select 注解, @Select({ "<script>select " + ALL_COLUMNS + " from &quo ...

  8. quartz任务时间调度入门使用

    Quartz 是 OpenSymphony 开源组织在任务调度领域的一个开源项目,完全基于 Java 实现. 作为一个优秀的开源调度框架,Quartz 具有以下特点: 强大的调度功能,例如支持丰富多样 ...

  9. Java中的常量治理

    版权声明:本文为博主原创文章,转载请注明出处,欢迎使劲喷 虽然推崇在java中使用枚举(可查看<Java中的枚举的治理>)来对数据字典及常量进行控制,但是有些时候,我们还是会觉得常量控制更 ...

  10. Android 7.0(牛轧糖)新特性

    Android 7.0(牛轧糖)新特性 谷歌正式在I/O大会现场详细介绍了有关Android 7.0的大量信息.目前,我们已经知道,新一代Android操作系统将支持无缝升级,能够通过Vulkan A ...