Asp.net mvc Can';t获取类别';即使Book实体具有类别外键,是否仍保留其books?
我刚接触asp.net,对我来说很容易:D,我正在构建一个简单的CRUD应用程序,我成功地获得了正确的列表和路由,但现在我想获得一本分类书籍 这就是我的书&类别实体:Asp.net mvc Can';t获取类别';即使Book实体具有类别外键,是否仍保留其books?,asp.net-mvc,asp.net-core,model-view-controller,entity-framework-core,Asp.net Mvc,Asp.net Core,Model View Controller,Entity Framework Core,我刚接触asp.net,对我来说很容易:D,我正在构建一个简单的CRUD应用程序,我成功地获得了正确的列表和路由,但现在我想获得一本分类书籍 这就是我的书&类别实体: public class Book { [Key] public int bookId { get; set; } public string bookName { get; set; } public double bookPrice { get; set;
public class Book
{
[Key]
public int bookId { get; set; }
public string bookName { get; set; }
public double bookPrice { get; set; }
public string bookImageUrl { get; set; }
[ForeignKey("Category")]
public int categoryId { get; set; }
public Category category { get; set; }
}
public class Category
{
[Key]
public int categoryId { get; set; }
public string categoryName { get; set; }
public string categoryDescription { get; set; }
public List<Book> books { get; set; }
}
我在数据库中有一本书和一个类别,就是这样:
有什么想法吗?有向导吗
如果您需要任何帮助,我们将不胜感激。因为您要求的是第一次或默认
return _appDbContext.Categories.Include(category => category.books).FirstOrDefault(category => category.categoryId == categoryId);
它返回找到的第一个类别。这就是为什么你只有一张唱片。它是一个关系数据库。每一条记录都有一个bookId和一个categoryId,它会将第一条记录带到正确的位置
如果您想要一个具有类别的图书列表,您必须对此进行更改查询
public IEnumerable<Book> getBooksByCategoryId(int categoryId)
{
return _appDbContext.Books.Include(c => c.category).Where(category => category.categoryId == categoryId).ToArray();
}
public IEnumerable getBooksByCategoryId(int categoryId)
{
return _appDbContext.Books.Include(c=>c.category).Where(category=>category.categoryId==categoryId.ToArray();
}
我没听懂你说的话?”这就是为什么你只有一张唱片?不,我不能得到任何记录,正如标题中所说,我一直在等待得到一个,因为只有一个,但没有工作!我得到“空”
return _appDbContext.Categories.Include(category => category.books).FirstOrDefault(category => category.categoryId == categoryId);
public IEnumerable<Book> getBooksByCategoryId(int categoryId)
{
return _appDbContext.Books.Include(c => c.category).Where(category => category.categoryId == categoryId).ToArray();
}