ObjectQuery是一个结合ActiveRecord的强类型对象查询工具,功能类似 AyendeNHibernate Query Generator ,但更强大。
下载:ObjectQuery.src.rar  44KB
            ObjectQuery.bin.rar  611KB
使用示例:
Post[] findAll = Query.From(DB.Post).Where(DB.Post.Title.StartsWith("Overloading"|| DB.Post.Title == "Operator").FindAll(); 
object[][] groupby = Query.From(DB.Post).GroupBy(DB.Post.Title).FindAll(DB.Post.Title, Aggregate.Count(DB.Post));
DateTime
? aggregate = Query.From(DB.Post).FindOne(Aggregate.Max(DB.Post.Created)); 
Post findFirst 
= Query.From(DB.Post).OrderBy(DB.Post.Created.DescOrder()).FindFirst(); 
Post[] booltest 
= Query.From(DB.Post).Where(DB.Post.Published).FindAll(); 
Blog[] listtest 
= Query.From(DB.Blog).Where(DB.Blog.Posts.Count > 0).FindAll(); 
Post[] math 
= Query.From(DB.Post).Where(DB.Post.Id + 1 > 0).FindAll(); 

使用步骤:
一、通过数据库表定义或者直接写出ActiveRecord的类。
数据库表定义:

CREATE TABLE [dbo].[Blogs] (
    
[blog_id] [int] IDENTITY (11NOT NULL ,
    
[blog_name] [varchar] (50NULL ,
    
[blog_author] [varchar] (50NULL 
ON [PRIMARY]

CREATE TABLE [dbo].[Posts] (
    
[post_id] [int] IDENTITY (11NOT NULL ,
    
[post_title] [varchar] (50NULL ,
    
[post_contents] [text] NULL ,
    
[post_category] [varchar] (50NULL ,
    
[post_blogid] [int] NULL ,
    
[post_created] [datetime] NULL ,
    
[post_published] [bit] NULL 
ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
ActiveRecord类定义:
ActiveRecord类定义

二、将ActiveRecord类加入一个项目(ObjectQuery.Test),编译项目生成dll或者exe文件(ObjectQuery.Test.exe)。
三、通过命令行运行代码生成工具ObjectQuery.Generator.exe,生成ObjectQuery.gen.cs / .vb 文件。
        ObjectQuery.Generator.exe cs e:\temp\ObjectQuery.Test.exe e:\temp
代码生成器生成的代码

四、将代码生成器生成的文件加入到项目中,就可以使用ObjectQuery的强大功能了。
测试代码

项目所使用的NHibernate和Castle.ActiveRecord的版本为svn服务器上的最新版本。
 这是我在博客园发的第一篇随笔,请大家多多支持。欢迎功能建议和意见反馈。
posted on 2006-10-16 14:49  benfish  阅读(1584)  评论(7编辑  收藏  举报