使用Entity Framework Core加载相关数据

时间:2016-12-23 01:59:06

标签: c# asp.net-core-mvc entity-framework-core

我正在使用ASP.NET Core& amp;创建一个新项目。实体框架核心。 (我认为这是实体框架7?)

我认为MS已经删除了Lazy Loading,因此我的虚拟馆藏没有自动加载。所以我决定尝试" .include"但是这种方法不见了。所以我包括了#34; System.Data.Entity"现在我有.include但它仍然将集合加载为null。 entites肯定在数据库中有相关数据。

我的代码如下:

//Property Table
public class Property
{
    public int Id { get; set; }

    public string PropertyName { get; set; }

    public string Address1 { get; set; }

    public string Address2 { get; set; }

    public string City { get; set; }

    public string Postcode { get; set; }

    public string State { get; set; }

    public string Country { get; set; }

    public string PhoneNumber { get; set; }

    public virtual ICollection<BodyCorpMember> BodyCorpMembers { get; set; }

    public bool Deleted { get; set; }
}

//Body Corp Table
public class BodyCorpMember
{
    public int Id { get; set; }

    public string FirstName { get; set; }

    public string LastName { get; set; }

    public string Email { get; set; }

    public bool IsSecretary { get; set; }

    public int Property_Id { get; set; }

    [ForeignKey("Property_Id")]
    public virtual Property Property { get; set; }
}

这是我在OnModelCreating中尝试过的一些没有成功的事情         //builder.Entity()         // .HasOne(a =&gt; a.Property)         // .WithMany(a =&gt; a.BodyCorpMembers)         // .HasForeignKey(&#34; Property_Id&#34;);

    //builder.Entity<Property>()
    //    .HasMany(a => a.BodyCorpMembers)
    //    .WithOne(a => a.Property);



    //Here is my main problem, Ive tried multiple options for ".include"   but it always returns null for BodyCorpMembers
          property = _dbContext.Properties.Include(a=>a.BodyCorpMembers).Where(a=>a.Id ==id).FirstOrDefault();

还应该注意我使用内置的IdentityDbContext作为我的Db Context。即:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>

1 个答案:

答案 0 :(得分:1)

我没弄清楚为什么它不起作用,但我刚刚将EF Core升级到1.1并使用了显式加载。

即:

property = _dbContext.Properties.Single(a=>a.Id == id);
_dbContext.Entry(property).Collection(a => a.BodyCorpMembers).Load();

这很好用。

我希望MS能够带回Lazy加载。

更新 在更新到Entity framework核心1.1之后.include也开始工作了。