2016-12-12 3 views
0

Ich verwende Code zuerst von databse und hier sind die Klassen:Entity Framework LazyLoad Ausgabe

[Table("Language")] 
public partial class Language 
{ 
    public Language() 
    { 
     LocaleString = new HashSet<LocaleString>(); 
    } 

    public int Id { get; set; } 

    [Required] 
    [StringLength(100)] 
    public string Name { get; set; } 

    [Required] 
    [StringLength(20)] 
    public string Culture { get; set; } 

    public virtual ICollection<LocaleString> LocaleStrings { get; set; } 
} 

[Table("LocaleStringResource")] 
public partial class LocaleString 
{ 
    public int Id { get; set; } 

    public int LanguageId { get; set; } 

    [Required] 
    [StringLength(200)] 
    public string Name { get; set; } 

    [Required] 
    public string Value { get; set; } 

    public virtual Language Language { get; set; } 
} 

und wenn ich das localeString Repository sagen: repository.GetIQueryable()

das Ergebnis ist:

SELECT 
[Extent1].[Id] AS [Id], 
[Extent1].[LanguageId] AS [LanguageId], 
[Extent1].[Name] AS [Name], 
[Extent1].[Value] AS [Value] 
FROM [dbo].[LocaleStrings] AS [Extent1]}  

und warum ich repository.GetIQueryable sagen(). ToList() die Liste der Ergebnisse, die die Eigenschaft Sprache enthalten und die Art ist so etwas wie dynamicProxies.Language, es bedeutet, dass der ToList lädt auch die relation daten oder nur weil das ergebnis im debugger zu sehen? Danke

+0

In Kürze - der Debugger. –

Antwort

0

Wenn die Abfrage so ist, wie Sie eingefügt haben, lädt EF die Spracheigenschaft im Debugger. Sie können es tatsächlich untersuchen: Wenn Sie nicht auf einer schnellen Verbindung sind, kann es eine leichte Verzögerung/Verzögerung geben, wenn Sie auf diese Eigenschaft zeigen. Ist das der Fall? Wenn ja, dann lädt EF die Eigenschaft in dem Moment, in dem Sie den Mauszeiger halten. Sie können 100% sicher sein, indem Sie das lazy loading ausschalten und dasselbe versuchen. Wenn es nicht geladen werden kann, war es ein lahmes Laden.