.NET Core 2.0 - 来自BlogItem的BlogCategory

Kri*_*sen 3 c# asp.net-mvc asp.net-core

只是试图让我@item.BlogCategories.CategoryName显示类别,但它说没有设置对象.我查了一下DB.这BlogCategoryId是正确的.如果这是MVC5则不会有问题.MVC核心有什么不同?

它写了@items正确的其余部分@item.Title,id等.


NullReferenceException:未将对象引用设置为对象的实例.

<a href="#">@item.BlogCategories.CategoryName</a>
Run Code Online (Sandbox Code Playgroud)
public class BlogItem
{
    public int Id { get; set; }
    public string Title { get; set; }
    [MaxLength(100)]
    [Required]
    public string BodyText { get; set; }
    public string Image { get; set; }
    public DateTime DateCreated { get; set; }
    public int Views { get; set; }
    public string UserId { get; set; }
    public virtual ApplicationUser User { get; set; }

    public virtual IEnumerable<ImageTag> Tags { get; set; }

    public int BlogCategoryId { get; set; }
    public virtual BlogCategory BlogCategories { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
    private readonly BlogDbContext db;

    public HomeController(BlogDbContext context)
    {
        db = context;
    }
    #endregion
    public IActionResult Index()
    {
        List<BlogItem> bi = db.BlogItems.OrderByDescending(m => m.DateCreated).ToList();
        return View(bi);
    }
Run Code Online (Sandbox Code Playgroud)

Dav*_*idG 5

实体框架核心不进行延迟加载(至少现在还没有),因此您需要明确您需要的子属性.例如:

List<BlogItem> bi = db.BlogItems
    .Include(bi => bi.BlogCategory)
    .OrderByDescending(m => m.DateCreated)
    .ToList();
Run Code Online (Sandbox Code Playgroud)