1

次のようなクラスがあるとしましょう:

public class MyClass {
...    
    public List<SomeClass> MyProperty {
        get { 
            SomeClass.GetCollectionOfThese(someId);
        } 
    }
...
}

GetCollectionOfThese()データベースを呼び出して、コレクションの構築に必要なレコードを取得します。ここで、別の場所に次のコードがあるとします。

MyClass obj = new MyClass(someId);
List<SomeClass> temp = obj.MyProperty;

...

SomeClass otherObj = obj.MyProperty.FirstOrDefault(i => i.Foo == "bar");

この場合、データベースは 2 回呼び出されていますか? または、プロパティ値はメモリにキャッシュされていますか?

4

2 に答える 2

1

データレイヤーで使用するテクノロジーによって異なります。たとえば、単一の DataContext で Linq2Sql を使用する場合、DataContext はエンティティをキャッシュし、キャッシュから再クエリするため、DataBase を 1 回だけヒットします。しかし、それは典型的なスキームではありません。

于 2012-05-05T05:19:00.593 に答える