Castle 开发系列文章

Castle是针对.NET平台的一个开源项目,从数据访问框架ORMIOC容器,再到WEB层的MVC框架、AOP,基本包括了整个开发过程中的所有东西,为我们快速的构建企业级的应用程序提供了很好的服务。4月份以来,Terrylee写了一系列的Castle的文章,这里做一下总结,后续还有Facility系列等,本部分内容会不断的更新。

第一部分:ActiveRecord学习实践系列

1Castle ActiveRecord学习实践(1):快速入门指南

2Castle ActiveRecord学习实践(2):构建配置信息

3Castle ActiveRecord学习实践(3):映射基础

4Castle ActiveRecord学习实践(4):实现One-Many关系的映射

5Castle ActiveRecord学习实践(5):实现Many–Many关系的映射

6Castle ActiveRecord学习实践(6):延迟加载和使用Where子句

7Castle ActiveRecord学习实践(7):使用HQL查询

8Castle ActiveRecord学习实践(8):数据有效性的验证

9Castle ActiveRecord学习实践(9):使用ActiveRecord的一些技巧

10Castle ActiveRecord学习实践(10):深度分析Schema Pitfals

11Castle ActiveRecord学习实践(11):Active Record for .NET2.0快速入门示例

第二部分:Castle IOC容器系列

1Castle IOC容器快速入门

2Castle IOC容器内幕故事(上)

3Castle IOC容器内幕故事(下)

4Castle IOC容器构建配置详解(一)

5Castle IOC容器构建配置详解(二)

6Castle IOC容器与Spring.NET配置之比较

7Castle IOC容器组件生命周期管理

8Castle IOC容器实践之Startable Facility(一)

9Castle IOC容器实践之Startable Facility(二)

10Castle IOC容器实践之TypedFactory Facility(一)

11Castle IOC容器实践之TypedFactory Facility(二)

12Castle IOC容器实践之EnterpriseLibrary Configuration Facility

13Castle IOC容器实践之FactorySupport Facility

作者:TerryLee
出处:http://terrylee.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
posted @ 2006-04-28 14:24 TerryLee 阅读(119212) 评论(168) 编辑 收藏

评论共2页: 上一页 1 2 
 回复 引用 查看   
#63楼[楼主] 2006-08-23 14:17 TerryLee      
@gassnake
过几天我制作成PDF供大家下载吧!

 回复 引用 查看   
#64楼[楼主] 2006-08-23 14:19 TerryLee      
@gubuyi
Facility是带有注入性质的Component!

 回复 引用   
#65楼 2006-08-26 14:41 powerdel[未注册用户]
再次请教,如何要实现Repeater的嵌套,就是如何设置内层Repeater的数据源哪.
让他显示和外层相关的信息.

 回复 引用   
#66楼 2006-08-29 16:03 Suren[未注册用户]
问一下哪里有Castle的配置文件的Schema(XSD)?
 回复 引用 查看   
#67楼[楼主] 2006-08-29 16:56 TerryLee      
 回复 引用   
#68楼 2006-09-29 16:46 codelover[未注册用户]
.net开源框架qq群30017484,Castle ActiveRecord、Nhibernate、ibatisnet、IOC容器Spring.Net和Castle、等框架讨论学习,欢迎加入,共同进步
 回复 引用 查看   
#69楼 2006-09-29 22:35 MaxFree      
看样子,老兄快要出书了.
 回复 引用 查看   
#70楼[楼主] 2006-10-06 17:21 TerryLee      
@MaxFree
现在还没有这个打算,呵呵

 回复 引用 查看   
#71楼 2006-10-07 20:16 jailu      
李老师,请问能不能给个Castle分页的例子?谢谢,我的邮箱是jailu@163.com
 回复 引用 查看   
#72楼[楼主] 2006-10-07 21:13 TerryLee      
@jailu
老师我可不敢当:-)

我现在没有这方面的例子,使用AR查询返回数据后,跟普通的分页没什么区别啊

 回复 引用 查看   
#73楼 2006-10-16 11:23 SHY520      
@TerryLee
有没有研究过Castle.MVC方面的东西?

 回复 引用 查看   
#74楼[楼主] 2006-10-16 21:25 TerryLee      
@SHY520
没有研究过,园子里有人写过MonoRail系列,你可以参考一下

 回复 引用 查看   
#75楼 2006-10-17 11:48 SHY520      
MonoRail以前做项目的时候用过一次,里面不能用asp.net的控件,做起大的项目会比较麻烦,现在看Castle.MVC,估计是因为还没有正式发布,所以看的人比较少吧
 回复 引用   
#76楼 2006-10-17 14:50 Ben[匿名][未注册用户]
要是能提供一个整体的文件下载就会好看多了..^_^
 回复 引用 查看   
#77楼[楼主] 2006-10-17 20:33 TerryLee      
@SHY520
可能是吧,我最近也没有时间研究了:-)

@Ben[匿名]
过段时间有空了我整理一个PDF文件吧

 回复 引用 查看   
#78楼 2006-10-20 09:08 牧野      
Hi,TerryLee:

你好!

你在博客园的Castle系列文章,对我帮助很大,很是感谢!

现在有一个疑问,不知你是否遇到过,假设我有一个表(Product),有下面三列:
ID,Serialnumber,Description,
在Product.cs中也是按这个顺序映射的,当我把这个表通过
dGrid.DataSource=product.FindAll()
绑定到DataGrid时列的秩序发生了变化,有可能是
Serialnumber,ID,Description,
我也试着使用DataGridTableStyle格式化,但没有用.因为DataSource是IList[]

有没有在AR中指定列的秩序或者按表结构列的顺序陈列的方法?

谢谢!

 回复 引用 查看   
#79楼[楼主] 2006-10-20 19:57 TerryLee      
@牧野
我实在不太清楚有没有这样的方法

 回复 引用   
#80楼 2006-11-12 22:42 liubo[未注册用户]
期待castle关于AOP的文章。
 回复 引用 查看   
#81楼[楼主] 2006-11-12 23:05 TerryLee      
@liubo
暂时顾不上写了

 回复 引用   
#82楼 2006-11-17 19:33 剑在上海^^[未注册用户]
TerryLee 大哥能不能把CASTLE.monorail也介绍一下呢,我很关注ON RAIL系
 回复 引用 查看   
#83楼[楼主] 2006-11-18 18:15 TerryLee      
@剑在上海^^
现在顾不上写了,太忙了:)

 回复 引用 查看   
#84楼 2006-11-20 16:40 老蒋      
非常好的入门资料,我也来学习一下Castle
 回复 引用   
#85楼 2006-11-24 20:25 Beewolf[匿名][未注册用户]
研究netbpm,发现需要研究log4net,nhiberate,castle这三个项目,前两者已经有一定的体会,castle却未知,于是google,终于找到这里。
谢谢。
看了2个小时,终有所获。

 回复 引用   
#86楼 2006-11-27 10:04 光[匿名][未注册用户]
您好,前不久拜读了您的Castle系列文章,现在的项目在使用ActiveRecord,我是个新手,想请教下,如何实现高级复合查询,业务中有10+个条件要选择,还有如果有的条件为空,该如何处理?数据库是sql server 2000,查询中有的条件为***=?有的为*** like ??? 有的为 between,多谢指教!
 回复 引用 查看   
#87楼[楼主] 2006-11-27 17:27 TerryLee      
@光[匿名]
高级复合查询不太容易实现,一般靠HQL

至于like和between等,直接用NHibernate的Expression就可以实现了,很简单的,我在这篇文章中有提到:

http://www.cnblogs.com/Terrylee/archive/2006/11/19/Castle_ActiveRecord_Hands_On_Lab_Basic_Data_Access.html

 回复 引用 查看   
#88楼[楼主] 2006-11-27 17:28 TerryLee      
@Beewolf[匿名]
:)

 回复 引用 查看   
#89楼 2006-12-12 18:21 莫相会      
请教一个问题
ActiveRecordBase中有BeforeSave(System.Collections.IDictionary state),这里的Save是不是包括Update和Save,我要在BeforeSave中做些处理,所以要override,但怎么判断是Update还是Save呢

 回复 引用 查看   
#90楼[楼主] 2006-12-13 20:22 TerryLee      
@莫相会
看看ActiveRecordBase中的代码:)

 回复 引用   
#91楼 2006-12-15 11:28 Jove[未注册用户]
收藏了,十分感谢!
 回复 引用 查看   
#92楼[楼主] 2006-12-15 21:10 TerryLee      
@Jove
客气

 回复 引用   
#93楼 2006-12-18 23:32 leego[未注册用户]
ActiveRecord里面一个实体它的FindAll方法返回的是一个实体的数组。那如果有排序问题要怎么解决呢?
 回复 引用 查看   
#94楼[楼主] 2006-12-18 23:40 TerryLee      
@leego
排序可以使用NHibernate的Expression

 回复 引用   
#95楼 2006-12-19 09:08 leego[未注册用户]
@TerryLee
好的。谢谢呀。
以前没有用过NHibernate。
我研究下。

 回复 引用 查看   
#96楼[楼主] 2006-12-23 16:40 TerryLee      
@leego
:)

 回复 引用 查看   
#97楼 2006-12-31 12:43 小芒果先生      
有时间的话,能够写一下Castle关于AOP方面的实现不?
呵呵~~~~

 回复 引用   
#98楼 2007-01-03 17:24 zilong[匿名][未注册用户]
AspectJ 中很容易实现横切, 在 这儿中如何实现啊?
 回复 引用 查看   
#99楼 2007-01-04 19:34 小芒果先生      
不知道Castle能不能实现在Nhiberate中实体类配置文件*.hbl.xml中的
composite-element。现在已证实可以实现many-to-one等。
希望楼主给我解答一下。
注:我主要是看了Nhiberate中的开源项目Cuyahoga,在它的Cuyahoga.Core项目中的Domain/Node.hbm.xml文件中的
<bag name="NodePermissions" cascade="all" lazy="true" table="cuyahoga_noderole">
<cache usage="read-write" />
<key column="nodeid" />
<composite-element class="Cuyahoga.Core.Domain.NodePermission, Cuyahoga.Core">
</composite-element>
</bag>
我不知道怎么用Castle来实现它。

 回复 引用   
#100楼 2007-01-31 14:43 paiming.org[未注册用户]
你的文章允许转载吗?
我想转再到
http://www.paiming.org/bbs去

 回复 引用   
#101楼 2007-02-01 11:24 YY[未注册用户]
有没有做成.chm的文档,这样更加的便于收藏,也更加的体现它的价值!!!
 回复 引用 查看   
#102楼[楼主] 2007-02-07 17:02 TerryLee      
@paiming.org
可以转载,注明出处

 回复 引用 查看   
#103楼[楼主] 2007-02-07 17:03 TerryLee      
@YY
现在没有制作成CHM格式的文档

 回复 引用   
#104楼 2007-03-02 11:42 licher[未注册用户]
已经为群建了个BBS,地址是http://castle.shoucao.cn,大家可以多多交流。!!!!

这里非常感谢TerryLee写的文章,有时间我也会在BBS上引用。!!!

 回复 引用 查看   
#105楼 2007-03-14 13:08 巫云      
希望Terry介绍Aspect#啊,想学习AOP。
 回复 引用   
#106楼 2007-03-15 15:10 Digital Castle[未注册用户]
楼主写的很好,正学习castle中,希望楼主继续努力,谢谢
 回复 引用   
#107楼 2007-04-25 17:40 那位[未注册用户]
我顶
 回复 引用   
#108楼 2007-05-08 10:43 guest[未注册用户]
怎么现在都没有新东西更新了啊
 回复 引用 查看   
#109楼 2007-05-14 12:25 Brush      
关注一下!!!!
 回复 引用   
#110楼 2007-06-17 13:42 peter.zhang[未注册用户]
你好,请问一下, Active Record for .NET2.0 中多数据库配置及初始化怎么写啊?? Application_Start 里怎么写?? 谢谢了.
 回复 引用   
#111楼 2007-06-18 08:56 tim[未注册用户]
你好,刚接触这个,应用时很多错误,都是和网上查到的步骤一样做的,不知道为什么都不通?? 有好点的QQ群,能介绍我学习下吗? 3Q
 回复 引用   
#112楼 2007-07-04 17:36 您好![未注册用户]
您有时间兼职,做我们的开发顾问吗?
 回复 引用 查看   
#113楼 2007-07-16 16:33 AnsonWu      
我们的项目中要用到Castle.MVC的东西,到处都找不到资料,,希望能尽快的发布下这方面的文章。
 回复 引用 查看   
#114楼 2007-07-26 12:26 怀念家驹      
castle什么时候出正式版啊?rc2都大半年了。
 回复 引用   
#115楼 2007-09-02 11:07 ttt[未注册用户]
真的是好 资料
 回复 引用   
#116楼 2007-09-08 15:35 seduction[未注册用户]
写的不错啊
 回复 引用   
#117楼 2007-09-08 15:35 seduction[未注册用户]
您有时间兼职,做我们的开发顾问吗?
 回复 引用   
#118楼 2007-09-08 15:36 seduction[未注册用户]
castle什么时候出正式版啊?
 回复 引用   
#119楼 2007-09-14 13:36 zfs2007[未注册用户]
您好啊,我在配置Castle的时候出现下面的问题,可以帮我解答下么:

app.config配置包括下面的东东:

<castle>
<components>
<component id="primaryDaoFactory"
type="LH2007.Data.NHibernateDaoFactory, LH2007.Data"
service="LH2007.Core.DataInterfaces.IDaoFactory, LH2007.Core">
<parameters>
<sessionFactoryConfigPath>F:\LH2007\LH2007\LH2007App\Config\LH2007NHibernate.config</sessionFactoryConfigPath>
</parameters>
</component>
</components>
</castle>

在创建:
IWindsorContainer windsorContainer = new WindsorContainer(new XmlInterpreter());

时出现出错:LH2007.Core could not be located
这是为什么呢?


 回复 引用   
#120楼 2007-09-27 10:54 wxf[未注册用户]
太好了,我非常佩服你,多向你学习
 回复 引用 查看   
#121楼 2007-12-20 12:19 振南—何氏      
能不能讲点castle aop方面的知识
 回复 引用   
#122楼 2008-01-29 18:20 Allan2[未注册用户]
TerryLee,我今天在Castle官网上了解了下,发现在建立View文件时,后缀名是.vm,这是如何建的?VS2005没有这种格式啊,需不需要配置IIS啊?盼回复,新手谢谢。
 回复 引用 查看   
#123楼 2008-02-21 18:27 JackMa      
我后知后觉啊,现在才知道Castle,多谢搂主写的文章啊!
 回复 引用 查看   
#124楼 2008-03-08 15:59 Vincent Yang      
看了半个月左右Castle感觉不错,但是不知道到有什么大的项目能用他啊?风险有点大
 回复 引用 查看   
#125楼[楼主] 2008-03-08 17:05 TerryLee      
@Vincent Yang
小项目中还是可以用的,不过现在Castle现在已经基本稳定了,据说准备发布1.0了

 回复 引用 查看   
#126楼 2008-03-09 16:48 Vincent Yang      
--引用--------------------------------------------------
TerryLee: @Vincent Yang
小项目中还是可以用的,不过现在Castle现在已经基本稳定了,据说准备发布1.0了
--------------------------------------------------------
为什么说小项目还是可以的?看了你的关于Castle的一系列文章,就是没有谈论他在项目中带来的弊病和致命缺点,不知道能否讲解一下呢?

 回复 引用 查看   
#127楼[楼主] 2008-03-09 17:07 TerryLee      
@Vincent Yang
我以前在两个小项目中使用了AR和Castle的IOC,感觉还可以,没出现什么致命的问题,呵呵

 回复 引用 查看   
#128楼 2008-03-10 04:40 Vincent Yang      
@TerryLee
那大项目有什么好的框架推荐吗?问了你好多问题,你都一一解答了,谢了

 回复 引用 查看   
#129楼[楼主] 2008-03-10 08:52 TerryLee      
@Vincent Yang
大项目我一般不会使用开源框架,有一定的风险,具体我也没有什么好的框架推荐:)

 回复 引用   
#130楼 2008-04-10 20:17 loyalchen[未注册用户]
很好.你挺不错的.
 回复 引用   
#131楼 2008-04-10 20:25 CSM[未注册用户]
我是学软件的 第一次接触Castle 今天第一次到这里,感觉很不错,版主加油!

如果可能的话 你可不可以写关于三层架构的问题 毕竟三层对开发是尤为重要的 如果可以我想会给很多人带来帮助 谢谢

 回复 引用 查看   
#132楼 2008-05-29 20:31 胡武陵      
牛人啊!!学习!!
 回复 引用   
#133楼 2008-06-20 09:37 Cherokee[未注册用户]
能提供下载就更好了
 回复 引用 查看   
#134楼 2008-07-11 22:01 magiclee      
非常感谢,您的文章写得非常详细非常有用。
 回复 引用 查看   
#135楼[楼主] 2008-07-11 23:02 TerryLee      
@magiclee
客气了:)

 回复 引用   
#136楼 2008-07-16 09:30 mogen[未注册用户]
你的文章 读起来有种爱不释手的感觉 感谢。
 回复 引用 查看   
#137楼[楼主] 2008-07-21 10:26 TerryLee      
@mogen
太客气了。。

 回复 引用 查看   
#138楼 2008-08-20 09:33 Q.Lee.lulu      
都是好文章啊,学习!

 回复 引用 查看   
#139楼[楼主] 2008-08-20 10:04 TerryLee      
@Q.Lee.lulu
:-)

 回复 引用 查看   
#140楼 2008-09-03 21:27 张跃      
非常感谢楼主啊,最近实习刚好要用这个东西
 回复 引用 查看   
#141楼[楼主] 2008-09-03 21:39 TerryLee      
@张跃
不用客气,呵呵:)

 回复 引用   
#142楼 2008-09-04 11:04 --刘智勇--[未注册用户]
感谢楼主,我们刚刚做的项目就用了这个ActiveRecord,真的太感谢你了,资料很全面!
 回复 引用 查看   
#143楼[楼主] 2008-09-10 23:43 TerryLee      
@--刘智勇--
:)

 回复 引用 查看   
#144楼 2008-09-25 15:26 Doho      
很喜欢TerryLee 的系列文章,2006年看的Enterprise Library 2.0系列,现在在学Enterprise Library 4.0 又回过头来温习一下您的EntLib 2.0 系列;2007年看的AJAX.NET 现在还一直在用;现在来找到这里来学习IOC了;感觉您写的这些系列一步一步的非常容易上手,再次感谢您的辛苦劳作,也非常敬佩您有这么独到的眼光、精湛的技术,我是必须向您学习的!
 回复 引用 查看   
#145楼[楼主] 2008-10-08 11:42 TerryLee      
@Doho
太过奖了,呵呵

 回复 引用   
#146楼 2008-10-16 10:48 Firefox.James[未注册用户]
你好,我最近也在学习使用CASTLE,现在遇到一个问题,就是我想做多数据库连接的配置,使用了<config type="">但在运行时却会报配置文件错误,“Could not obtain type from name ...” ,可能是我原来查看的资料比较旧的缘故?具体应该是怎样配置的呢???

PS:我用的是官网上下的CastleProject1.0

 回复 引用   
#147楼 2008-11-20 13:25 牛魔王[未注册用户]
我在尝试用Castle框架做一个留言板的程序,可是老是出错,好像是配置文件的问题,我照着官方提供的Demo程序做的,在官方的示例程序中的GlobalApplication.cs中怎么没有在Application_Start()中写ActiveRecord的初始化呢,很是不明白。

你有一个简单的示例程序吗?主要是配置方面的知识,要有ActiveRecord、MonoRail、Windsor。
有的话发我邮箱里,万分感谢。niu.chenglei@163.com

 回复 引用   
#148楼 2008-11-25 11:53 kaikaier[未注册用户]
為什么我用SimpleQuery時會報一個異常啊?代碼如下
[ActiveRecord("tDevice")]
public class TDeviceInfo : ActiveRecordBase
{
//...

public static void DeleteAll()
{
ActiveRecordBase.DeleteAll(typeof(TDeviceInfo));
}

public static TDeviceInfo[] FindAll()
{
return ((TDeviceInfo[])(ActiveRecordBase.FindAll(typeof(TDeviceInfo))));
}


public static TDeviceInfo Find(int Fid)
{
return ((TDeviceInfo)(ActiveRecordBase.FindByPrimaryKey(typeof(TDeviceInfo), Fid)));
}

public static TDeviceInfo[] FindByCondition(TDeviceInfo item)
{
SimpleQuery query = new SimpleQuery(
typeof(TDeviceInfo),
@"from tDevice t where t.fdeviceName = ?",
item.FdeviceName);
return (TDeviceInfo[])ExecuteQuery(query);

}

#endregion
當我調用FindByCondition時,執行到ExecuteQuery時就報:Could not perform ExecuteQuery for TDeviceInfo 的異常。調用FindAll、Find都能執行。

 回复 引用   
#149楼 2009-01-05 23:04 Bruce_zhang[未注册用户]
有这样的高手又这么会帮助人真的是我们的福气。。。
非常感谢`

 回复 引用 查看   
#150楼 2009-01-11 21:02 Junxy      
文章很有用
感谢分享

 回复 引用 查看   
#151楼[楼主] 2009-01-12 11:01 TerryLee      
@Junxy
客气了:)

 回复 引用   
#152楼 2009-05-16 18:33 guoyou
初学者:谢谢 Li sir 这些对我有很大帮助
 回复 引用 查看   
#153楼[楼主] 2009-05-18 11:12 TerryLee      
@guoyou
:)

 回复 引用   
#154楼 2009-06-12 14:24 雁过留影
我是这样配置的:
<procedure id="UserInfo.GetUserinfo" parameterMap="map" resultClass="map">
Exec [dbo].[fsp_Query_CEFundArchives] @EndDate = #end_date#
</procedure>

错误是这样爆出来的:
This SQL map does not contain an ParameterMap named ClosedUnitFund.map.


麻烦各位帮帮忙啦,越快越好.3q先!

 回复 引用 查看   
#155楼 2009-10-15 09:26 Gsanidt      
TerryLee,请问这个系列的做成PDF了吗?好了的话发一份给我好吗?
Email:gsanidt@163.com

 回复 引用 查看   
#156楼 2009-11-12 08:43 gumarco      
很好很强大。
 回复 引用   
#157楼 2009-12-05 18:36 achun[未注册用户]
TerryLee ,我照你上面的,老是报错,“NHibernate.Cfg.Configuration”的类型初始值设定项引发异常。

IConfigurationSource source = ConfigurationManager.GetSection("activerecord") as IConfigurationSource;
ActiveRecordStarter.Initialize(source, typeof(User));//这里报错

麻烦各位帮帮忙,看是什么原因,新手在这里谢谢啦!

 回复 引用 查看   
#158楼 2010-01-07 18:55 efour      
请问一下,我项目中使用log4net进行日志的输出,同时又使用了Castle组件,但是好像因为Castle里面也使用了Log4net所以导致我的使用log4net输出不了日志文件到指定目录,好像是Castle的Log4net配置覆盖了我的了。怎么办呢?
 回复 引用 查看   
#159楼 2010-07-24 19:37 ysjiev      
首先,感谢有这样的好楼主!
然后麻烦楼主或者其他高手帮忙看看这个问题:

ActiveRecordStarter.Initialize(source, typeof(User));
该句时老是提示:

“Castle.ActiveRecord.Framework.Internal.ActiveRecordModelBuilder”的类型初始值设定项引发异常。

配置文件没有错误,连接数据库没有错库,会是哪里呢?

谢谢!

 回复 引用 查看   
#160楼 2010-09-20 15:42 Alan@Net      
好东西,下个项目就准备用Castle
 回复 引用 查看   
#161楼 2010-11-05 02:58 天上有云      
引用小芒果先生:不知道Castle能不能实现在Nhiberate中实体类配置文件*.hbl.xml中的
<br>composite-element。现在已证实可以实现many-to-one等。
<br> 希望楼主给我解答一下。
<br> 注:我主要是看了Nhiberate中的开源项目Cuyahoga,在它的Cuyahoga.Core项目中的Domain/Node.hbm.xml文件中的
<br><bag name="NodePermissions" cascade="all" lazy="true" table="cuyahoga_noderole">
<br> <cache usage=...

我喜欢看柯南。。看一集,死一个日本人。
columbia sportswear outlet | the north face outlet

 回复 引用 查看   
#162楼 2011-07-25 08:38 争光      
好文,支持博主出书。
评论共2页: 上一页 1 2