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. USTC 1119 graph 图的同构

    USTC 1119 图的同构的严格定义可以参考离散数学:The simple graphs G1=(V1,E1) and G2=(V2,E2)are isomorphic if there exist ...

  2. mybatis系列笔记(2)---mapper代理方法

    mapper代理方法 在我们在写MVC设计的时候,都会写dao层和daoimp实现层,但假如我们使用mapper代理的方法,我们就可以不用先daoimp实现类 当然这得需要遵守一些相应的规则: (1) ...

  3. Angular开发者指南(一)入门介绍

    什么是Angular AngularJS是动态Web应用程序的结构框架. 它允许您使用HTML作为模板语言,并允许您扩展HTML的语法以清晰,简洁地表达应用程序的组件.AngularJS的数据绑定和依 ...

  4. SVN 中trunk、branches、tags的详解

    1.trunk是主分支,是日常开发进行的地方.2.branches是分支.一些阶段性的release版本,这些版本是可以继续进行开发和维护的,则放在branches目录中.又比如为不同用户客制化的版本 ...

  5. mysql 局域网同事之间直接用客户端访问

    情景: 几个人作为小组开发一个项目,以我的机器为服务器,将mysql服务安装在我的机器上,其他小伙伴用客户端都能访问我这个数据库 解决:   首先: 1.设置mysql允许其它机器连接(linux环境 ...

  6. web计时机制——performance对象

    前面的话 页面性能一直都是Web开发人员最关注的领域.但在实际应用中,度量页面性能的指标,是提高代码复杂程度和巧妙地使用javascript的Date对象.Web Timing API改变了这个局面, ...

  7. Java面试03|并发及锁

    1.synchronized与Lock的区别 使用synchronized这个关键字实现的同步块有一些缺点: (1)锁只有一种类型 (2)线程得到锁或者阻塞 (3)Lock是在Java语言层面基于CA ...

  8. Bzoj超级经验大放送题集(好评如潮哦~~~)

    其实这些是因为没有数据才形成的...唯一可惜的是这些都是需要300软妹币才能打开的萌萌哒权限题*^_^* 好啦,吾来教你如何快速AC么么哒 pascal: 1 begin end. //Pascal ...

  9. R处理大数据集

    R会把所有的对象读存入虚拟内存中.对我们大多数用户来说,这种设计可以提高与R相互的速度,但是当分析大数据集时,这种设计会降低程序运行速度有时还会产生跟内存相关的错误. 内存限制主要取决于R的build ...

  10. session的使用

    一.什么是session? Session:在计算机中,尤其是在网络应用中,称为“会话控制”.Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 Web 页之间跳转时, ...