首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建图书/图书类别?

如何创建图书/图书类别?
EN

Stack Overflow用户
提问于 2021-01-26 22:08:50
回答 1查看 45关注 0票数 0

TblBook.cs

代码语言:javascript
复制
public class TBLBook : IEntity
{
    [Key]
    public int BookId { get; set; }
    public string BookName { get; set; }

    [ForeignKey("TblCategory")]
    public int CategoryId { get; set; }
    public int WriterId { get; set; }
    public string BookYearofPublication { get; set; }//Basım Yılı
    public string BookPublishingHouse { get; set; } //Yayın evi
    public string BookPage { get; set; }
    public bool BookStatus { get; set; }

    public TBLCategory TblCategory { get; set; }
}

TblCategory.cs

代码语言:javascript
复制
public class TBLCategory : IEntity
{
    [Key]
    public int CategoryId { get; set; }
    public string CategoryName { get; set; }

    public  virtual ICollection<TBLBook> TblBooks { get; set; }
}

我这样做是因为它是企业架构。

代码语言:javascript
复制
public class EfEntityRepositoryBase<TEntity, TContext> : IEntityRepository<TEntity>
        where TEntity : class, IEntity, new()
        where TContext : DbContext, new()
    {
        ////return _context.Categories.Include(i => i.SubCategories).ToList();
        public List<TEntity> GetList(Expression<Func<TEntity, bool>> filter=null)
        {
            using (TContext context = new TContext())
            {
                return filter == null ? context.Set<TEntity>().ToList() : context.Set<TEntity>().Where(filter).ToList();
            }
        }
}

业务:

代码语言:javascript
复制
public List<TBLBook> GetList()
{
    return _bookDal.GetList();
}

控制器视图

代码语言:javascript
复制
public IActionResult Index()
{
    var query = new BookListViewModel
    {
        TblBooks = _bookService.GetList()
    };
    return View(query);
}

索引视图:

代码语言:javascript
复制
<tr>
    <td>@b.BookId</td>
    <td>@b.BookName</td>
    <td>@b.WriterId</td>
    <td>@b.CategoryId</td>     <!--Problem: @b.TblCategory.CategoryName-->
    <td>@b.BookYearofPublication</td>
    <td>@b.BookPublishingHouse</td>
    <td>@b.BookPage</td>
    <td>@b.BookStatus</td>
</tr>

我的问题是;当我这样做的时候,@b.TblCategories.CategoryName

抛出null或error。

我无法显示对应的类别名称。我怎样才能填满它,谢谢。我的英语不好,对不起。我试着用图片来解释。

简而言之,我想要做的是:显示类别ID。我希望它显示为类别名称。但是它看起来是空白的,我应该填什么呢?

屏幕截图:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-26 22:14:29

默认情况下,不加载相关实体。

EF6:Loading Related Entities

EF核心:Loading Related Entities

此外,不要在数据库或代码中使用"TBL“前缀,也不要将DbContext包装在额外的存储库层中。它已经是一个存储库了。

因此,使用如下查询进行加载:

代码语言:javascript
复制
var books = db.Books.Include(b => b.Category).ToList();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65902888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档