8

Code First で EF 5 を使用しています。いくつかのプロパティを常に熱心にロードしたいクラスがあります。virtualキーワードを削除しましたが、熱心な読み込みではありません:

public class Person
{
   public ICollection<Email> Emails { get; set; } 
   public Profile Profile {get;set;}
}

遅延読み込みをオフにすると、自動的に熱心に読み込まれなくなりますよね? その場合、Include() を使用せずにアーカイブするにはどうすればよいですか?

ありがとう!

4

1 に答える 1

18

いいえ、キーワードを削除して遅延読み込みをオフにしても、virtual自動的に熱心な読み込みが有効になるわけではありません。あなたはInclude関連するEntityCollection、そうでなければなりません:

var personWithProfile = ctx.People.Include(x => x.Profile).First();
var personWithProfileAndEmails = ctx.People.
                                           .Include(x => x.Profile)
                                           .Include(x => x.Emails)
                                           .First();

これは、ADO.NET チームのブログ ( http://blogs.msdn.com/b/adonet/archive/2011/01/31/using-dbcontext-in-ef-feature-ctp5-part-6 ) からの素晴らしい読み物です。-loading-related-entities.aspx

于 2012-08-22T00:35:54.847 に答える