我无法让延迟加载工作。
如果我这样做:
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; }
}
答案 0 :(得分:0)
原来问题是使用本地MS SQL数据库。使用SQLite没有问题。