繁体   English   中英

如何使用实体框架核心获取外键中的数据

[英]how to fetch the data in the foreign key using Entity framework core

我试图通过我的 foreignKey 获取 HttpGet 上的 categoryName,这是 categoryid,这是我的 swagger 的图片,看看我想要实现的目标:

图片

它应该显示 Id 的类别名称。

这是我的 model:

public class ItemTables
{
    [Key]
    public int Id { get; set; }

    public string company { get; set; }

    public string availability { get; set; }

    public decimal price { get; set; }

    public decimal discount { get; set; }

    public decimal tax { get; set; }

    public string description { get; set; }

    public int categoryid { get; set; }

    public categories categories { get; set; }

}

public class categories
{
    [Key]
    public int categoryID { get; set; }

    public string categoryName { get; set; }

    public ICollection<ItemTables> items { get; set; }
}

我的背景:

public class itemTableDbContext : DbContext
{
    public itemTableDbContext(DbContextOptions options) : base(options)
    {
    }


    public DbSet<ItemTables> ItemTables { get; set; }

    public DbSet<categories> categories { get; set; }


    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {

        modelBuilder.Entity<ItemTables>()
            .HasOne<categories>(c => c.categories)
            .WithMany(i => i.items)
            .HasForeignKey(f => f.categoryid);

        //modelBuilder.Entity<itemTable>().ToTable("itemtable");

        //modelBuilder.Entity<categories>().ToTable("categories");
    }
}

这是我的 itemtableController,它有 [HttpGet]:

public class ItemTableController : ControllerBase
{
    private readonly itemTableDbContext _itemTableDbContext;

    public ItemTableController(itemTableDbContext itemTableDbContext)
    {
        _itemTableDbContext = itemTableDbContext;
    }

    [HttpGet]
    public async Task<IActionResult> GetItemsTable()
    {
        var ItemTable = await _itemTableDbContext.ItemTables.ToListAsync();

        return Ok(ItemTable);
    }
    
    [HttpPost]
    public async Task<IActionResult> AddItemTable([FromBody] ItemTables itemTableRequest)
    {
        await _itemTableDbContext.ItemTables.AddAsync(itemTableRequest);
        await _itemTableDbContext.SaveChangesAsync();

        return Ok(itemTableRequest);
    }
}

我希望你能得到我想要达到的目标,提前谢谢你,如果你需要更多信息,请告诉我:)

您必须包含类别,以便与您的项目一起检索

var ItemTable = await _itemTableDbContext.ItemTables.Include(i=>i.categories).ToListAsync();

您可以查看此文档以了解有关包含方法的更多信息https://learn.microsoft.com/en-us/ef/core/querying/related-data/eager

尖端:

  • 将类别 class 重命名为 => 类别
  • 公共类别类别 { 得到; 放; } => 公共类别类别 {get;set;}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM