【问题标题】:How do I get a value from a foreign key to populate a list with an associated value?如何从外键获取值以使用关联值填充列表?
【发布时间】:2019-12-03 12:04:44
【问题描述】:

我的 ViewModel 中有以下列表:

public List<Objective> Objectives { get; set; }

我还有以下存储库方法:

public async Task<List<Objective>> GetAll()
{
    return await _context.Objective.ToListAsync();
}

最后我在返回 ViewModel 的服务中有以下方法:

public async Task<ObjectivesViewModel> GetViewModel()
{
    var viewModel = new ObjectivesViewModel()
    {
        Objectives = await _objectivesRepository.GetAll()
    };

    return viewModel;
}

所有这些都按预期工作。

我的目标模型如下所示:

public string ReferenceCode { get; set; }
public int TeamId { get; set; }
public string Description { get; set; )

TeamId 模型如下所示:

public int TeamId { get; set; }
public string TeamName { get; set; }

就目前而言,存储库应返回所有内容,但是我想做的是添加与 TeamId 关联的 TeamName。我将如何完成或接近这一点?

【问题讨论】:

  • 您所说的“替换”是什么意思...您的意思是,您不希望 TeamId 与视图模型一起返回吗?如果是这种情况,请创建没有 TeamId 的 ObjectiveViewModel... 自己进行从 Objective 到 ObjectiveViewModel 的映射...或使用 AutoMapper
  • 我添加了一些说明并编辑了我的问题。谢谢。
  • 你在问一些你可以用谷歌搜索的东西。即使是最基本的教程也会向您展示这一点。查找 EF 和 ForeignKey 以及如何使用导航属性或如何使用延迟加载的替代方法。

标签: c# asp.net entity-framework asp.net-core entity-framework-core


【解决方案1】:

制作 TeamId 外键,并访问团队导航属性 目标模型:

public string ReferenceCode { get; set; }
public int TeamId { get; set; }
[ForeignKey("TeamId ")]
public Team Team { set; get; }
public string Description { get; set; )

现在您可以访问 teamId 或 teamName

Objective obj = _context.Objective.FirstOrDefault();
obj.Team.TeamName

【讨论】:

  • 如何获得所有元素,而不仅仅是第一个?
猜你喜欢
  • 2021-01-10
  • 1970-01-01
  • 1970-01-01
  • 2013-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多