したがって、2つのテーブルを相互に関連付けることを試みています。私は製品テーブルとイメージテーブルを持っています。私は製品オブジェクトに画像のコレクションを持ち、画像オブジェクト/テーブルに製品IDを持っていますが、製品オブジェクトを取得すると画像コレクションは空です。エンティティフレームワークが関連するオブジェクトを返さない
デバッグ時に、製品オブジェクトが情報をプルする前にコンテキスト要素を検査すると、コンテキスト要素にイメージがロードされ、次に製品に割り当てられます。したがって、私は手動でコンテキスト要素を検査し、それから画像を検索するときにのみ機能します。
製品
public class Product
{
public int Id { get; set; }
public string FriendlyUrl { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public double? Price { get; set; }
public double? Weight { get; set; }
public int? Stock { get; set; }
public virtual ICollection<Image> Images { get; set; }
}
画像
public class Image
{
public int Id { get; set; }
public int ProductId { get; set; }
public string FileName { get; set; }
}
DBContext
public class TheContext : DbContext
{
public TheContext(DbContextOptions<TheContext> options) : base(options)
{
}
public DbSet<Product> Products { get; set; }
public DbSet<Image> Images { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Product>().HasMany<Image>(s => s.Images);
}
}
データアクセス
public Product GetById(string id)
{
Product product = _context.Products.FirstOrDefault(p => p.FriendlyUrl == id);
return product;
}
'_context.Products.Include(X => x.Images).FirstOrDefault(...' –
は 'modelBuilder.Conventionsを使用してみてください。();を削除します。 –
Perdido