PostgreSQLを使用してEntity Framework Coreで関連するテーブルデータを取得しない

asp.net-core-1.0 entity-framework-core postgresql

質問

私はPostgreSQLでEntity Framework Coreを試しています。私は1対多数の関係である2つのテーブルを持っています。関係によると、映画には年と年に多くの映画があります。しかし、一度映画を取得すると、年はそれに含まれていない、年を取得しない限り、各映画の年はnullです。しかし、年を取り戻した後、映画は年を取るようになります。私は年を取得するコード行を上に移動します。それは同じことが起こった。映画を検索しない限り、年は映画を持っていません。次に、映画を検索した後、選択した年が映画を持つようになります。誰もそれを解決する方法を知ることができますか?それは怠惰な読み込みのようなものです。

ここに私の2つの実体があります。

public class T_MOVIE
{
    [Key]
    public long Oid { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public DateTime CreatedDate { get; set; }
    public long? YearOid { get; set; }
    [ForeignKey("YearOid")]
    public T_YEAR MOVIE_YEAR { get; set; }
}

public class T_YEAR
{
    public T_YEAR()
    {
        this.YEAR_MOVIEs = new HashSet<DataModel.T_MOVIE>();
    }
    [Key]
    public long Oid { get; set; }
    public string Name { get; set; }
    public ICollection<T_MOVIE> YEAR_MOVIEs { get; set; }
}

また、OnModelCreatingでは、

protected override void OnModelCreating(ModelBuilder builder)
{
    builder.Entity<T_MOVIE>().HasKey(m => m.Oid);
    builder.Entity<T_MOVIE>().HasOne(m => m.MOVIE_YEAR).WithMany(m => m.YEAR_MOVIEs);

    builder.Entity<T_YEAR>().HasKey(m => m.Oid);
    builder.Entity<T_YEAR>().HasMany(m => m.YEAR_MOVIEs).WithOne(m => m.MOVIE_YEAR);
}

次に、データを取得します。

var movies = _db.T_MOVIE.ToList();
var years = _db.T_YEAR.ToList();

ありがとうございました。

受け入れられた回答

クエリに「Include()」を追加する必要があります。それをしない限り、ヌル関係を返します。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ