Asp.net core mvc EF7中引用的加载
我有两门课——author和blogpost:Asp.net core mvc EF7中引用的加载,asp.net-core-mvc,entity-framework-core,Asp.net Core Mvc,Entity Framework Core,我有两门课——author和blogpost: public class Author { public Author() { Blogposts = new HashSet<Blogpost>(); } public int Id { get; set; } public string Name { get; set; } public virtual ICollection<Blogpost> Blog
public class Author
{
public Author()
{
Blogposts = new HashSet<Blogpost>();
}
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Blogpost> Blogposts { get; set; }
}
使用EF7(beta4),我通过以下方式连接它们:
public partial class MyDbContext : DbContext
{
public virtual DbSet<Author> Author { get; set; }
public virtual DbSet<Blogpost> Blogpost { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Author>(entity =>
{
entity.Property(e => e.Id)
.ForSqlServer().UseIdentity();
});
modelBuilder.Entity<Blogpost>(entity =>
{
entity.Property(e => e.Id)
.ForSqlServer().UseIdentity();
});
modelBuilder.Entity<Blogpost>(entity =>
{
entity.Reference<Author>(d => d.Author).InverseCollection(p => p.Blogposts).ForeignKey(d => d.AuthorId);
});
}
}
公共部分类MyDbContext:DbContext
{
公共虚拟数据库集作者{get;set;}
公共虚拟数据库集Blogpost{get;set;}
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
modelBuilder.Entity(Entity=>
{
entity.Property(e=>e.Id)
.ForSqlServer().UseIdentity();
});
modelBuilder.Entity(Entity=>
{
entity.Property(e=>e.Id)
.ForSqlServer().UseIdentity();
});
modelBuilder.Entity(Entity=>
{
entity.Reference(d=>d.Author).InverseCollection(p=>p.Blogposts).ForeignKey(d=>d.authord);
});
}
}
当我访问blogpostDb.blogpost.First(x=>x.Id==Id)
时,我检索blogpost对象-但是,.Author
属性为空。此外,检索任何作者对象时,它都是。Blogposts
集合为空
我知道EF7既没有实现急切加载,也没有实现惰性加载。但是我如何检索/分配通过外键引用的任何对象呢?EF7已经实现了即时加载 使用。包括
var post=context.Blogpost.First();//post.Author将为空
var post=context.Blogpost.Include(b=>b.Author.First();//将加载post.Author
有关使用集合的详细信息,请参阅此问题的答案:对于无法找到“包含”方法的用户,请注意:您需要使用Microsoft.Data.Entity添加
代码>位于文件顶部。命名空间现在已更改。您需要使用Microsoft.EntityFrameworkCore为Entity Framework Core 1.1.0添加。
public partial class MyDbContext : DbContext
{
public virtual DbSet<Author> Author { get; set; }
public virtual DbSet<Blogpost> Blogpost { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Author>(entity =>
{
entity.Property(e => e.Id)
.ForSqlServer().UseIdentity();
});
modelBuilder.Entity<Blogpost>(entity =>
{
entity.Property(e => e.Id)
.ForSqlServer().UseIdentity();
});
modelBuilder.Entity<Blogpost>(entity =>
{
entity.Reference<Author>(d => d.Author).InverseCollection(p => p.Blogposts).ForeignKey(d => d.AuthorId);
});
}
}