私はすでに答えを知っていると確信していますが、他の人に確認してもらう必要があります。問題は、Entity Framework: Code First での DbSet の使用に関するものです。(C#を使用)
これらの小さなクラスを例として使用しましょう。
class TopClass
{
Public List<ExampleA> ListOne {get; set;}
Public List<ExampleB> ListTwo {get; set;}
//Other contents ...
}
class ExampleA
{
Public List<ExampleC> ListTree {get; set;}
//Other contents ...
}
class ExampleB
{
//Contents ...
}
class ExampleC
{
//Contents ...
}
したがって、TopClass には ExampleA と ExampleB という名前のクラスのリストがあり、ExampleA には ExampleC のリストがあります。
DbContext から継承するクラスは次のようになります。
class ExampleContext : DbContext
{
public DbSet<TopClass> TopClasses {get; set}
//Other contents..
}
端的に言えば、TopClass 用の DbSet だけがあります。Topclasses のオブジェクトはデータベースに保存できます。また、TopClass-objects / ExampleA-object のリストに入れられた ExampleA、ExampleB、および ExampleC のオブジェクトもデータベースに保存されます。データベースから TopClass オブジェクトをロードすると、リストにあった他のすべてのオブジェクトもロードされます。つまり、TopClass のオブジェクトを介して、データベースに保存された他のオブジェクトにアクセスできます。
ここで、私の同僚と話し合ってきた質問があり
ます。TopClass オブジェクトと他のすべての関連オブジェクトをロードせずに (また、SQL コーディングやラムダを使用せずに)、ExampleA のオブジェクトに直接アクセスしたい場合式)、ExampleA には DbSet が必要ですか? または、DbSet からの読み込みを減らして、必要なオブジェクトのみを含めることは可能ですか? はいの場合、TopClass をロードせずに ExampleA のオブジェクトをロードすることさえ可能ですか?
いくつかの答えは明らかだと思います。私自身、TopClass オブジェクトをロードせずに、データベース内のそのクラスのオブジェクトに直接アクセスするには、DbSet が必要だと考えています。ただし、信じるのではなく、知る必要があるので、私の信念を確認または否定 (?) してください。これまでインターネットや文献で読んだことについて言えば、いくつかのクラスでの DbSet の使用は効果的なコーディングを強調していますが、何が可能で何が不可能かは強調していません。