仮にに戻って書いていない:LINQのエントリ(entity.Related).Query.Load()私は3つのEFのエンティティクラスを持っているコレクションプロパティ
public class Person { ... public ICollection Vehicles { get; set; } } public class Vehicle { ... public Person Owner { get; set; } public CarModel ModelInfo { get; set; } } public class CarModel { ... // properties for make, model, color, etc }
Person.Vehicles
プロパティは、レイジーロードされています。
Person
インスタンスが既にロードされていて、そのプロパティも含まれるようにVehicle
コレクションプロパティをロードしたいとします。
だから私はこのていますので、同じように使用
void LoadVehiclesAndRelated(MyDbContext dbContext, Person person)
{
dbContext.Entry(person)
.Collection(p => p.Vehicles)
.Query()
.Include(v => v.ModelInfo)
.Load();
}
:私はこれを行うとき、それは最初p.Vehicles
式を評価するときの特性があるため、
using(MyDbContext dbContext = ...) {
Person p = GetPerson(123);
LoadVehiclesAndRelated(dbContext, p);
}
foreach(Vehicle v in p.Vehicles) {
Console.WriteLine(v.ModelInfo);
}
は、しかし、私は、実行時に例外を取得実際には空です(したがって、ロードしたい)が、DbContextが破棄されるようになりました。
.Load()
呼び出しが行われた(LoadVehiclesAndRelated()
の内側に、私はSQLはSQL Serverプロファイラでサーバー()に対して実行されているが、コレクションプロパティが空のままで見ました。
どのように私は、プロパティを読み込むことができますし、Include
とDサブプロパティ
うるさく、このシナリオは、明示的なローディングのためのMSDNガイドで言及されていない?https://msdn.microsoft.com/en-us/data/jj574232.aspx
ただ明確にするため、 'LoadVehiclesAndRelated'内部' dbContext'変数は、(MyDbContextコンテキストを使用して=囲ん '...'と同じである –
@IvanStoevはい - ?私は私の質問に明確化を追加します – Dai