[英]Database query returning only the first element of the data base as the same instance for all, in ASP.NET MVC Core 6
我遇到了一些麻烦,无法弄清楚为什么我的 sql 数据库返回第一个数据条目作为所有其他条目。这是我从名为 HealthDataFuture 的表中获取所有数据库表条目的方法
[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);
}
这是我的数据库表条目,当我查询所有条目时,它会像所有其他条目一样返回第一个条目,它们具有相同的 ID,因为我想返回所有条目,然后返回图表
这是我不断回来的结果
我也尝试过这种获取数据的方式,但这是同样的问题
------编辑 ----- 问题已解决原来我的 MYSQL 表 model 没有正确创建,因为没有主键也没有外键
最好不要共享图像,而是使用正确的标签进行编码。 使用代码可以帮助其他用户和所有社区,例如,它可以使您的问题可搜索。
无论如何你可以尝试这样做:
if (!string.IsNullOrEmpty(id)){
List<HealthDataFuture> DataList = _db.HealthDataFuture.Where(x => h.Id == id).ToList();
return View(id);
}
return RedirectToAction("Index");
我对您的代码也有一些疑问:
您提供的详细信息越多,我们为您提供的帮助信息就越多。
评论后编辑:
如果你想从数据库中删除数据,你应该使用 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://learn.microsoft.com/it-it/ef/core/miscellaneous/async
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.