ASP.NET MVC Core 6 中的数据库查询仅返回数据库的第一个元素作为所有实例的同一实例

Database query returning only the first element of the data base as the same instance for all, in ASP.NET MVC Core 6

我遇到了一些麻烦,无法弄清楚为什么我的 sql 数据库是 return 第一个数据条目,因为所有其他 entries.This 是我获取所有数据库的方法来自名为 HealthDataFuture

的 table 的 table 个条目
[HttpPost]
        public IActionResult AjaxMethod(string id)
        {
            List<object> chartData = new List<object>();
            chartData.Add(new object[]
                            {
                            "Months", "SOFAS"
                            });
            //FOR SOME REASON IT KEEPS READING THE FIRST DATABASE ENTRY ONLY SO THERE ALL THE ENTRIES ARE THE SAME VALUE
            
            foreach (HealthDataFuture data in _db.HealthDataFuture)
            {
                if (data.id == id)
                {
                    chartData.Add(new object[]
                        {
                            data.Month, data.Sofas
                        });
                }
            }

            return Json(chartData);
        }

这是我的数据库 table 条目,它是第一个条目,当我查询所有其他条目时,它们具有相同的 ID,因为我想 [=33] =] 所有这些,然后是图表

这是我不断返回的结果

我也试过这种获取数据的方式,但是还是一样的问题

--------编辑 ----- 问题已解决 事实证明我的 MYSQL table 模型没有正确创建,因为没有主键也没有外键

最好不要分享图片,而是使用正确的标签编码。使用代码可以帮助其他用户和所有社区,例如,它可以使您的问题可搜索。

总之你可以尝试这样做:

if (!string.IsNullOrEmpty(id)){
    List<HealthDataFuture> DataList = _db.HealthDataFuture.Where(x => h.Id == id).ToList();
    return View(id);
}
return RedirectToAction("Index");

我对你的代码也有一些疑问:

  1. 它应该做什么?
  2. DataList 就像来自 db 的 select 查询,但没有人使用 DataList。为什么?

您提供的详细信息越多,我们可以帮助您的信息就越多。

评论后编辑:

如果你想从数据库中删除数据,你应该使用 saveChanges。例如,如果你想删除所有id不是“1”的行,你可以尝试:

if (!string.IsNullOrEmpty(id)){
    _db.HealthDataFuture.RemoveRange(_db.HealthDataFuture.Where(x => h.Id != id));
    _db.SaveChanges();
    return View(id);
}
return RedirectToAction("Index");

您还可以阅读有关以异步方式访问数据库的内容,推荐并且性能更好:https://docs.microsoft.com/it-it/ef/core/miscellaneous/async