2010-06-23 11:18:41
涉及的技术内容包括:ASM、ANSI C、.NET/C#、Python、Linux/Ubuntu 等。记录读书笔记、生活点滴。关注基础理论和开发……
除特别标注外,所有文章均为作者原创,转载请注明出处。谢谢!
查看 "推荐文章目录"。
研发中心长期招聘开发人员,详情请点击
"Linux/C, Python 职位"、
".NET/C# 职位"。
雨痕内部技术交流群,欢迎熟识的朋友参与。
将 添加为您的 MSN 联系人即可。
为杜绝垃圾广告的侵扰,只有注册用户可以发表评论和留言。
如果有什么问题,可以单击右侧图标给雨痕发消息。([Castle AR] 5. Base Relations
[ 2007-05-14 11:15:43 | 作者: yuhen ]
Castle ActiveRecord 通过特性处理数据表关联关系。
多数时候,Many-to-One 和 One-To-Many 总算相伴而生的。在下面的例子中,每个组可以有多个用户加入。我们通过在 User 类型里面使用 BelongsTo 添加一个名为 "GroupId" 的字段来处理 Many-to-One 的关联,而在 Group 中我们使用 HasMany 处理 One-to-Many。注意 HasMany 的参数,分别是 "User ...
阅读全文…
- Many-to-one: BelongsToAttribute
- One-to-many: HasManyAttribute
- Many-to-many: HasAndBelongsToManyAttribute
多数时候,Many-to-One 和 One-To-Many 总算相伴而生的。在下面的例子中,每个组可以有多个用户加入。我们通过在 User 类型里面使用 BelongsTo 添加一个名为 "GroupId" 的字段来处理 Many-to-One 的关联,而在 Group 中我们使用 HasMany 处理 One-to-Many。注意 HasMany 的参数,分别是 "User ...
阅读全文…
[Castle AR] 4. CRUD
[ 2007-05-09 13:21:50 | 作者: yuhen ]
ActiveRecord 的 CRUD 操作基本上都是由 ActiveRecordBase 的静态方法完成。其实例(含子类型)方法,以及 ActiveRecordMediator 只是对这些静态方法的包装调用而已。当然,ActiveRecordBase 方法又是对 NHibernate Session 方法的包装。
我们用下面这个实体来简单演示一下常用方法的使用。
阅读全文…
我们用下面这个实体来简单演示一下常用方法的使用。
[ActiveRecord("Users")]
public class User : ActiveRecordBase<User>
{
private int id;
[PrimaryKey(PrimaryKeyType.Identity, Access=PropertyAccess.FieldCamelcase)]
public int Id
{
get { return id; }...阅读全文…
[Castle AR] 3. Validate
[ 2007-05-08 14:03:32 | 作者: yuhen ]
在业务设计中,对数据往往有确定的格式限制。我们通常的做法是在用户输入界面做这些处理,不过 Castle AR 为我们提供了另外一个备选方案。当我们无法确定类库或服务调用者是否会进行格式检查时,这个功能就非常实用了。要实现这个功能需要 ActiveRecordValidationBase / ActiveRecordValidationBase<T>,以及一些与之配套的验证特性。
验证特性说明
阅读全文…
验证特性说明
- ValidateNotEmpty: 属性不能为空,包括 String.Empty。
- ValidateConfirmation: 验证两个属性必须相等,如密码验证。
- ValidateEmail: 验证邮件格式。
- ValidateLength: 属性字符串长度必须等于或者在某个长度之间。
阅读全文…
[Castle AR] 2. ActiveRecord
[ 2007-05-08 12:41:37 | 作者: yuhen ]
Castle ActiveRecord 对于数据实体的设计非常灵活,大量特性的使用,使得其代码方式非常类似 WCF 的声明式编程。
1. 实体类型
通常我们会选择从 ActiveRecordBase (或其泛型版本) 继承实体类型,它几乎提供了实体所需的所有操作方法。
阅读全文…
1. 实体类型
通常我们会选择从 ActiveRecordBase (或其泛型版本) 继承实体类型,它几乎提供了实体所需的所有操作方法。
[Serializable]
public abstract class ActiveRecordBase<T> : ActiveRecordBase
{
protected internal static int CountAll();
protected internal static void Create(T instance);
protected internal static void Delete(T instance);...阅读全文…
[Castle AR] 1. Starter
[ 2007-05-07 12:52:02 | 作者: yuhen ]
以前研究过一阵 ORM,基于某些理由,比较喜欢 XPO 和 Castle ActiveRecord。原因不外乎以下几点:
阅读全文…
- "Class to DB",我觉得 ORM 最重要的目的是用一种简便的方式来存储对象。我们对业务分析的重点是对象,而不会优先考虑数据库设计。XPO 和 Castle AR 在这方面做得都很好。
- 一个是著名厂商 DevExpress 的产品,另一个是被广泛使用的 NHibernate 的封装,较好的升级保障对于项目开发是很重要的。网上一些个人的 ORM 作品虽然很有特色,但毕竟没人能保证 "未来三天" 它是否依然存在,也没有人能保证 Bug 会得到修复。
- 这两个组件都能得到较好的技术支持,XPO 是商业软件自不必说,NHibernate 的用户群组和开发资料网上也很多。
- 基于开发成本考虑,这两套组件无论是代码维护还是人力资源上都有较好的性价比。
阅读全文…
PostSharp - Lightweight Aspect-Oriented System
[ 2007-04-06 17:41:13 | 作者: yuhen ]
PostSharp 是一个令人兴奋的项目,他结合了 MSBuild Task 和 MSIL Injection 技术,从另外一个角度实现 AOP 编程。试用过后你会感觉到其便利性,我们和以往基于 Dynamic Proxy 方式的 AOP 解决方案做个比较。
阅读全文…
- 由于采用 MSIL Injection,因此静态代码注入的执行效率要高于使用 Reflection Emit。
- 使用 MSBuild Task,使得开发人员可以像使用编译器内置 Attribute 那样使用 AOP。
- 可以拦截任意方法,而 Dynamic Proxy 方式的 AOP 往往采取继承方式来拦截 Virtual 方法。
- 拥有更多的控制权。包括中断执行流程,修改参数和返回值等等。
- 还可以拦截 Field Access、Exception 等操作。
阅读全文…
[ActiveRecord] 之八:Queries
[ 2006-09-13 08:12:57 | 作者: yuhen ]
ActiveRecordBase.ExecuteQuery(IActiveRecordQuery query) 让我们可以用 hql 执行一些复杂的查询操作。
常用的 Query 对象包有 ScalarQuery 和 SimpleQuery 两种类型,那么他们在使用上有什么不同?
ScalarQuery.cs
阅读全文…
ExecuteQuery(ew ScalarQuery(typeof(User), "from User u where u.Age > ?", 18));
常用的 Query 对象包有 ScalarQuery 和 SimpleQuery 两种类型,那么他们在使用上有什么不同?
ScalarQuery.cs
public ScalarQuery(Type targetType, string hql, params object[] parameters) : base(targetType)
{
this.hql = hql;
this.parameters = parameters;...阅读全文…
Castle ActiveRecored Beta4 的变化
[ 2006-09-11 20:43:26 | 作者: yuhen ]
Castle 的官方 Release 版本依然停留在 2006-1-1 发布的 Beta3,这个版本里面有很多设计不合理的地方。今天从其 Daily Builds 获取了最新的 Beta4 版本(2006-8-27 CASTLE-760-net-2.0-release.zip),发现变化非常大,泛型支持和继承关系总算正常了。
看来在 1.0 发布以前,结构变化可能还会发生,那些用 Beta3 开发项目的人恐怕有苦头吃了。
下面是我画的几个 Beta4 相关的 UML 图。
...
阅读全文…
看来在 1.0 发布以前,结构变化可能还会发生,那些用 Beta3 开发项目的人恐怕有苦头吃了。
下面是我画的几个 Beta4 相关的 UML 图。
...
阅读全文…










