Castle ActiveRecord学习实践(6):延迟加载和使用Where子句
2006-04-10 18:18
495 查看
摘要:在ActiveRecord中把数据库表之间的关联关系采用对象间的聚合关系来表现,然而这却带来一系列的性能上的问题。就像我在One-Many中用到的例子Blog,使用Blog.Find(1)查找了一个Blog对象,也许我们只用到它,但事实它却把该Blog所关联的Post对象也读取出来放在了内存中,于是我们就需要有一种方法来实现只在需要Post对象的时候框架再自动读取。另外ActiveRecord只提供了Find(id),FindAll()这样两个静态的查询方法,在我们查询中还远远不够,这方面ActiveRecord为我们提供了HQL语言的支持,同时也可以通过设置Where子句来实现一些简单的查询。
主要内容[/b][/b]
1.实现延迟加载
2.使用Where子句
一.实现延迟加载[/b][/b]
要实现延迟加载,其实只要在HasMany特性中使用Lazy=true就可以了。来看我们的Blog类是如何声明的:
[ActiveRecord("Blogs")]
public class Blog : ActiveRecordBase
[Test]
public void TestLazyLoad()
[Test]
public void TestLazyLoad()
[HasMany(typeof(Post),Table="posts", ColumnKey="post_blogid",Where="post_categories='Castle'")]
public IList CastlePosts
[Test]
public void TestCondWhere()
{
//找到Blog对象
Blog blog = Blog.Find(8);
//获取Castle的Posts数量
int resultCount = blog.CastlePosts.Count;
int expectedCount = 2;
Assert.IsNotNull(blog);
Assert.AreEqual(expectedCount,resultCount);
}
这里我们调用CastlePosts得到的就是Category为Castle的Posts。关于延迟加载和使用Where子句就介绍到这儿了。下篇文章介绍如何在RectiveRecord中验证输入数据的有效性。
参考资料[/b]
Castle的官方网站http://www.castleproject.org
主要内容[/b][/b]
1.实现延迟加载
2.使用Where子句
一.实现延迟加载[/b][/b]
要实现延迟加载,其实只要在HasMany特性中使用Lazy=true就可以了。来看我们的Blog类是如何声明的:
[ActiveRecord("Blogs")]
public class Blog : ActiveRecordBase
[Test]
public void TestLazyLoad()
[Test]
public void TestLazyLoad()
[HasMany(typeof(Post),Table="posts", ColumnKey="post_blogid",Where="post_categories='Castle'")]
public IList CastlePosts
[Test]
public void TestCondWhere()
{
//找到Blog对象
Blog blog = Blog.Find(8);
//获取Castle的Posts数量
int resultCount = blog.CastlePosts.Count;
int expectedCount = 2;
Assert.IsNotNull(blog);
Assert.AreEqual(expectedCount,resultCount);
}
这里我们调用CastlePosts得到的就是Category为Castle的Posts。关于延迟加载和使用Where子句就介绍到这儿了。下篇文章介绍如何在RectiveRecord中验证输入数据的有效性。
参考资料[/b]
Castle的官方网站http://www.castleproject.org
相关文章推荐
- Castle ActiveRecord学习实践(6):延迟加载和使用Where子句
- Castle ActiveRecord学习实践(6):延迟加载和使用Where子句
- C#.Net Castle ActiveRecord学习实践(6):延迟加载和使用Where子句
- Castle ActiveRecord学习实践(9):使用ActiveRecord的一些技巧
- Castle ActiveRecord学习实践(7):使用HQL查询
- Castle ActiveRecord学习实践(7):使用HQL查询
- C#.Net Castle ActiveRecord学习实践(7):使用HQL查询
- C#.Net Castle ActiveRecord学习实践(9):使用ActiveRecord的一些技巧
- C#.Net Castle ActiveRecord学习实践(4):实现One-Many关系的映射
- C#.Net Castle ActiveRecord学习实践(5):实现Many–Many关系的映射
- C#.Net Castle ActiveRecord学习实践(10):深度分析Schema Pitfals
- Castle ActiveRecord学习实践(11)——ActiveRecordMediator
- Castle ActiveRecord学习实践(8):数据有效性的验证
- Castle ActiveRecord学习实践2----转
- Castle ActiveRecord学习实践(4):实现One-Many关系的映射
- Castle ActiveRecord学习实践(8):数据有效性的验证
- Castle ActiveRecord学习实践(6)延迟加载
- Castle ActiveRecord学习实践(9):数据有效性的验证
- Castle ActiveRecord学习实践(5):实现Many–Many关系的映射
- Castle ActiveRecord学习实践(2):构建配置信息