代码优先实体框架延迟加载不起作用

时间:2016-06-01 20:26:03

标签: c# entity-framework ef-code-first

我无法让延迟加载工作。

如果我这样做:

static void Main(string[] args)
{

    using(var db = new BlogContext())
    {

        //db.Blogs.Load();
        //db.Posts.Load();

        foreach (var v in db.Blogs)
        {
            Console.WriteLine("Blog: "+ v.Name+" Post count:"+v.Posts.Count()); 

        }
    }
}

“发布计数”始终为0;

但如果我在foreach之前取消注释Load()调用,则Post计数是正确的。任何想法有什么不对?

这是使用的实体类:

   public class Blog
    {

       public Blog(){
          Posts = new List<Post>();
       }
       [Key]
       public int BlogId { get; set; }
       public string Name { get; set; }
       public virtual ICollection<Post> Posts { get; set; }

   }

   public class Post
   {

      [Key]
      public int PostId { get; set; }
      public string Title { get; set; }
      public string Content { get; set; }

      public int BlogId { get; set; }
      [ForeignKey("BlogId")]
      public virtual Blog Blog { get; set; }

   }


   public class BlogContext : DbContext
   {
      public BlogContext()
      {
         Configuration.LazyLoadingEnabled = true;
         Configuration.ProxyCreationEnabled = true;
      }
      public DbSet<Blog> Blogs { get; set; }
      public DbSet<Post> Posts { get; set; }
   }

1 个答案:

答案 0 :(得分:0)

原来问题是使用本地MS SQL数据库。使用SQLite没有问题。