亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

ASP .NET Core Webapi 父子關系?

ASP .NET Core Webapi 父子關系?

C#
富國滬深 2022-06-18 17:51:33
我在.net core 2.1中處理我的webapi我有兩個模型:public class Project{    [Key]    public int Id { get; set; }    public string Name { get; set; }    public string Description { get; set; }    public ICollection<Task> Tasks { get; set; } //list of tasks}public class Task{    [Key]    public int Id { get; set; }    public string Name { get; set; }    public string Description { get; set; }    [ForeignKey("Project")]    public int ProjectId { get; set; } //project that task is included    public Project Project { get; set; }}和 DbContext:public class TaskManagerDbContext : DbContext{    public TaskManagerDbContext(DbContextOptions<TaskManagerDbContext> options)       : base(options) { }    public DbSet<Project> Projects { get; set; }    public DbSet<Task> Tasks { get; set; }}我做了一個遷移和更新數據庫。下一步是制作基于實體框架的具有讀/寫操作的 WebAPI 控制器。我的問題是,為什么當我嘗試調試我的代碼tasks列表時沒有關聯到 Project?我嘗試了硬編碼的任務和項目。一切都很好,當我打電話給簡單api/Projects的回應時,我得到了"tasks": null。你能幫我在 WebApi 控制器中關聯這些信息嗎?控制器看起來像這樣:[Route("api/[controller]")][ApiController]public class ProjectsController : ControllerBase{    private readonly TaskManagerDbContext _context;    public ProjectsController(TaskManagerDbContext context)    {        _context = context; //tasks in projects here are null    }    // GET: api/Projects    [HttpGet]    public IEnumerable<Project> GetProjects()    {        return _context.Projects;    }}其標準控制器由框架生成。我可以通過這種方式很好地獲得項目和任務(通過生成的控制器)。但項目沒有tasks相關。如何包含tasks到Project?
查看完整描述

2 回答

?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊

編寫您的GetProjects方法如下:


[HttpGet]

public IEnumerable<Project> GetProjects()

{

    return _context.Projects.Include(p => p.Tasks).ToList();

}

然后為避免在類的方法中Self referencing loop添加以下配置:ConfigureServicesStartup


public void ConfigureServices(IServiceCollection services)

{

    ...


    services.AddMvc()

        .AddJsonOptions(

            options => options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore

        );


    ...

}


查看完整回答
反對 回復 2022-06-18
?
BIG陽

TA貢獻1859條經驗 獲得超6個贊

您可以使用如下所示的包含。您將在項目集合中獲得任務集合


// GET: api/Projects

    [HttpGet]

    public IEnumerable<Project> GetProjects()

    {

        return _context.Projects.Include(x=>x.Task);

    }


查看完整回答
反對 回復 2022-06-18
  • 2 回答
  • 0 關注
  • 142 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號