2017-08-19 22 views
0

編集:googlingから私はちょうどEF7が遅延ロードをサポートしていないことを知ったので、どうすればこれを達成できますか?Entity Frameworkコアで外部オブジェクトが見つかりませんか?

私は、次があります。

[Table("MediaSubmission")] 
public class MediaSubmission 
{ 
    [Key] 
    public int Id { get; set; } 

    public string Title { get; set; } 

    public virtual MediaItem Item { get; set; } 
} 

[Table("MediaItem")] 
public class MediaItem 
{ 
    public int Id { get; set; } 

    [Required] 
    [DataType(DataType.Url)] 
    public string MediaContents { get; set; } 
} 

私は次のようにデータベースに追加するMediaSubmissionMediaItemを作成します。

データベースの検査
var item = new MediaItem() { MediaContents = mediaSubmission.URL }; 
_context.Add(item); 

var submission = new MediaSubmission() { Item = item, Title = mediaSubmission.Title }; 
_context.Add(submission); 

await _context.SaveChangesAsync(); 

return true; 

ItemIdがどのMediaItem表にあります主キーIDはmediaSubmissionです。

しかし、MediaSubmissionsを反復処理すると、Itemに対してnull参照例外が発生します。

私はオーバーライドしていませんOnModelCreating

何が起こっているのですか?

編集:ちょうどこれを追加するにはApplicationbContextです:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
{ 
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) 
    { 
    } 

    public DbSet<MediaSubmission> ItemSubmissions { get; set; } 
    public DbSet<MediaItem> Items { get; set; } 

    protected override void OnModelCreating(ModelBuilder builder) 
    { 
     base.OnModelCreating(builder); 
    } 
} 

私はそれにItemSubmissionsItemsを追加しました。

+0

遅延読み込みはサポートされていません。関連データの読み込み方法については、https://docs.microsoft.com/en-us/ef/core/querying/related-dataを参照してください。 – Smit

答えて

-1

「MediaSubmissionsを繰り返し処理する」と言うとき、MediaSubmissionsをどのように取得していますか?

次のようなこれらのオブジェクトのためのアイテムのデータを取得する必要がある場合があります

_context.MediaSubmissions.Include( "アイテム")ToListメソッド();。

EDIT:

真this.Configuration.LazyLoadingEnabled =を入れてみてください、遅延ロードを許可します。クラスのコンストラクタ内でDbContextを継承します。

遅延ロードの詳細はこちらをご覧ください。http://www.entityframeworktutorial.net/EntityFramework4.3/lazy-loading-with-dbcontext.aspx

+0

私はdbcontextから探しています。私は、それがそうでなければ、要求される前にすべての外部キーの関係を作成するのが非常に遅いだろう、それがアクセスするときにメディアアイテムを遅延して作成すると思った。 – tweetypi

関連する問題