0

私は次のようなことができることを知っています:

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

}

また、このフィールドは、ゲッターがアクセスされたときではなく、結合によってすぐに入力されます。

ただし、次のように、クエリを実行したときにすぐにフェッチを行うかどうかを指定することはできますか?

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

.NET Entity Framework はInclude、次のようにを使用してこれを行うことができます。

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

そして、Rails にはこの:include構文を使用した同じ機能があると思います。Castle ActiveRecord に相当するものがあるのか​​、それとも遅延が常にモデル レベルで定義されているのか疑問に思っています。ありがとう!!

4

1 に答える 1

1

はい、できます。推奨される方法は、デフォルトで遅延マッピングを使用してから、それぞれの場合に必要なものを熱心にフェッチすることです。

クエリごとの熱心なフェッチの定義は、クエリAPIによって異なります。たとえば、HQLは「joinfetch キーワードを使用しSetFetchMode、使用するCriteriaAPIなどを使用します。

于 2012-05-01T15:11:33.983 に答える