You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Entity Framework Core中通过外键获取关联的categoryName

解决方案

要实现HttpGet接口返回ItemTables时包含对应的categoryName,按以下步骤操作即可:

1. 创建DTO类(推荐方案)

为了避免实体循环引用、精准控制返回字段,创建专门的数据传输对象(DTO):

public class ItemTableDto
{
    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 string CategoryName { get; set; }
}

2. 修改控制器的Get接口

使用EF Core的Include加载关联的分类实体,再映射到DTO返回:

[HttpGet]
public async Task<IActionResult> GetItemsTable()
{
    var itemTables = await _itemTableDbContext.ItemTables
        .Include(i => i.categories) // 加载关联的分类数据
        .Select(i => new ItemTableDto
        {
            Id = i.Id,
            Company = i.company,
            Availability = i.availability,
            Price = i.price,
            Discount = i.discount,
            Tax = i.tax,
            Description = i.description,
            CategoryId = i.categoryid,
            CategoryName = i.categories.categoryName
        })
        .ToListAsync();

    return Ok(itemTables);
}

3. 处理循环引用问题(可选)

如果直接返回实体类而非DTO,需配置JSON序列化忽略循环引用(.NET 6+):

// Program.cs中添加
builder.Services.AddControllers()
    .AddJsonOptions(options =>
    {
        options.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles;
    });

4. 验证Swagger展示

启动项目后访问Swagger,调用HttpGet接口即可看到返回结果中包含CategoryName字段,显示对应分类名称。


内容的提问来源于stack exchange,提问作者Firefly0027

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 06:01:32