我知道我可以这样做:
[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具有等效,或者如果懒惰始终在模型级别定义。谢谢!
答案 0 :(得分:1)
是的,它可以。建议的方法是默认使用延迟映射,然后急切地获取每个案例所需的内容。
定义每个查询的热切提取取决于查询API。例如,HQL使用“join fetch”关键字,使用您使用的标准API SetFetchMode
等。