【问题标题】:Update Multiple Table Rows in Service from a list viewmodel?从列表视图模型更新服务中的多个表行?
【发布时间】:2021-08-14 14:08:08
【问题描述】:

我有一个视图模型,它的值作为列表从视图发送,用于编辑四个输入框...

public class UpdatePollViewModel
{
    public List<string> Answer { get; set; }
}

在我的服务中,我通过Id从数据库中获取了相同的值:

public bool UpdatePoll(Guid id, UpdatePollViewModel viewModel)
{
    var polloption = _context.PollOptions.Where(p => p.PollId == Id).ToList();
}

我用过这个,但它没有意义,因为它重复了很多!!!

 foreach (string item in viewModel.Answer)
 {
    foreach (var item2 in polloption)
    {
        item2.Answer = item;
        _context.SaveChanges();
    }
 }

处理这个问题的最佳方法是什么?

【问题讨论】:

  • 请注意,[asp.net] 标签适用于 ASP.NET Framework,而不适用于 ASP.NET Core。
  • 很难说你想要完成什么。这段代码看起来要将所有polloption 答案设置为最后一个答案。此外,当您不复数您的列表时会非常混乱。 Answers 更具可读性。
  • @Steve Greene 显然我有四个输入,它们的值是从数据库中获取的现在我想获取具有公共 ID 的四个值,如果它发生了变化,请在数据库也是如此。
  • 你可能很清楚。 4 输入文本框?我只能假设每个都是一个答案字符串?需要更多信息。也许从视图开始。

标签: c# asp.net-core asp.net-core-mvc blazor


【解决方案1】:

我将假设幻数是 4。

有 4 个输入框用于在视图模型列表中填充 4 个答案,其顺序与从数据库中检索到的现有 4 个答案的顺序相同,并且您希望将 4 个输入映射到数据库中的 4 个记录.

var polloption = _context.PollOptions.Where(p => p.PollId == Id).ToList();

for (int i = 1; i <= 4; i++)
{
    polloption[i-1].Answer = viewModel.Answer[i-1];
}

_context.SaveChanges();

【讨论】:

    猜你喜欢
    • 2017-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-31
    • 1970-01-01
    • 2011-08-09
    • 2023-03-05
    相关资源
    最近更新 更多