MVC:从数据库中获取值列表

MVC: Get List of values from Database

提问人:bootsy 提问时间:6/19/2019 最后编辑:Dale Kbootsy 更新时间:6/20/2019 访问量:2207

问:

我正在尝试从MVC控制器中的数据库中提取数据。这是我拥有的代码,但不确定我是否使用 LINQ 查询正确执行此操作

public class EditProfileController : Controller
{
    private ApplicationDbContext db = new ApplicationDbContext();

    public IActionResult Index()
    {
        var listdata = db.Users.ToList().Select(x => new FE.Models.AspNetUsers
        {
            Id = x.Id,
           // (repeat the same for all)
        }).ToList();
    }
}

在索引上出现错误:

EditProfileController.Index():并非所有代码路径都返回值 FE

在数据库上:

名称 db 在当前上下文中不存在

如何从数据库表中提取数据以创建列表视图?我应该使用 LINQ 吗,如果是这样,我在上面的代码中缺少什么?

ASP.NET-MVC 格式

评论

0赞 William Xifaras 6/19/2019
你在哪里注入/声明数据库?此外,您不会返回任何内容。您需要返回 listData。
0赞 bootsy 6/19/2019
如何声明数据库?

答:

1赞 Umer Zaman 6/19/2019 #1

您没有返回任何您应该返回列表的内容:

public class EditProfileController : Controller
{
    public IActionResult Index()
    {
        var listdata = db.Users.ToList().Select(x => new FE.Models.AspNetUsers
        {
            Id = x.Id,
           // (repeat the same for all)
        }).ToList();
        return Ok(listdata);
    }
}

评论

0赞 bootsy 6/19/2019
是的,添加退货会有所帮助。如何修复数据库。我仍然收到错误“名称 db 在当前上下文中不存在”。
0赞 Umer Zaman 6/19/2019
@bootsy 在类或函数中创建名称为“db”的数据库上下文类对象,作为访问数据库表的要求
0赞 bootsy 6/19/2019
我添加了私有 ApplicationDbContext db = new ApplicationDbContext();但我在新的 ApplicationDbContext 上收到错误“没有给出对应于”ApplicationDbContext.ApplicationDbContext(DbContextOptions<ApplicationDbContext>)“所需的正式参数”options“的参数
0赞 Ricardo 6/20/2019 #2

我只使用 VB(使用 C# 转换器),所以这是我如何从我的数据库中获取值列表:

Public Function Index()
   dim listData as List(Of Users) = new List(Of Users)

  Using db as new YourDB()
    listData = db.Users.Select(Function(x) x.Id = id).ToList()
  End Using

  return listdata
End Function

或者你可以只使用你的模型。IQueryable

0赞 KevinLamb 6/20/2019 #3
public class EditProfileController : Controller
{
    public IActionResult Index()
    {
        List<FE.Models.AspNetUsers> listdata = new List<FE.Models.AspNetUsers>();
        using(ApplicationDbContext db = new ApplicationDbContext())
        {
            listdata = db.Users.Select(x => new FE.Models.AspNetUsers
            {
                Id = x.Id,
               // (repeat the same for all)
            }).ToList();
        }

        return View(listdata)
    }
}

我做了几个假设,即您正在尝试将列表传递给视图,而不是返回列表,并且您的数据库上下文正在工作。确保在视图中声明模型,如下所示:AspNetUsers

@model IEnumerable<FE.Models.AspNetUsers>