2016-12-23 3 views
2

ASP.NETコア&エンティティフレームワークコアで新しいプロジェクトを作成しています。 (私はこれがエンティティフレームワーク7だと思います)関連するデータのエンティティフレームワークコアへのロード

私はMSがレイジーローディングを削除していると思うので、私の仮想コレクションは自動的にロードされません。だから私は ".include"を試してみることにしましたが、この方法はありませんでした。私は "System.Data.Entity"をインクルードしましたが、今は.includeを持っていますが、それでもコレクションはnullとしてロードされます。エンタテイメントは、関連するデータをデータベースに持っています。これは私がいない成功 //builder.Entity() // .HasOne(=> a.PropertyとOnModelCreatingにしようとした事のいくつかをある

//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; } 
} 

次のように

マイコードです) // .WithMany(a => a.BodyCorpMembers) // .HasForeignKey( "Property_Id");

//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(); 

私は、私のDbコンテキストとして組み込みのIdentityDbContextを使用していることにも注意してください。すなわち、:

+0

以下はnullを返しますか? '_dbContext.Properties.Include(A => a.BodyCorpMembers) .FirstOrDefault [Entity Frameworkのコア - 遅延読み込み]の' –

+0

可能な重複(=> a.BodyCorpMembers.ToList()> 0を数える。)(HTTPS ://stackoverflow.com/questions/40122162/entity-framework-core-lazy-loading) –

答えて

1

私はそれがうまくいかなかった理由を理解しませんでしたが、私はEFコアを1.1にアップグレードして明示的な読み込みを使用しました。

すなわち:

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

これが正常に動作します。

私はMSがレイジーローディングを戻してくれることを願っています。

更新 エンティティフレームワークコア1.1にアップデートした後、.includeも動作し始めました。

関連する問題