Castle Castle ActiveRecord可以选择性地懒惰吗?

时间:2012-04-30 23:14:59

标签: c# .net nhibernate castle-activerecord

我知道我可以这样做:

[BelongsTo("Foo", NotNull = true, Lazy = FetchWhen.Immediate)]
public Foo MyProperty
{

}

此字段将立即通过连接填充,而不是通过连接填充 访问getter。

但是,是否可以指定是否完成提取 我立即运行查询时,例如:

MyModel[] foo = MyModel.FindAllByProperty("User", someUser);
//Sometimes I want lazy, sometimes I don't..

.NET实体框架可以使用Include执行此操作,例如:

var foos = from f in context.FOO.Include("Bar") where f.id == 123 select f;

我相信Rails使用:include语法具有相同的功能。我想知道是否 Castle ActiveRecord具有等效,或者如果懒惰始终在模型级别定义。谢谢!

1 个答案:

答案 0 :(得分:1)

是的,它可以。建议的方法是默认使用延迟映射,然后急切地获取每个案例所需的内容。

定义每个查询的热切提取取决于查询API。例如,HQL使用“join fetch”关键字,使用您使用的标准API SetFetchMode等。