如何基于特定值查询数据库中的列MVC ASP.NET Core

Ana Syan |

这可能是我想过的一个显而易见的答案,但我需要帮助从共享属性的数据库中检索值。

我的数据库: MenuItems数据库

这个特定的MenuItems数据库包含菜单项和指向我的餐厅数据库的链接。有一个RestaurantID列,代表该项目所属的餐厅。非常简单,但仅举例来说:ID为1的鸡块属于ID为1的餐厅。

我需要执行一个查询,该查询将检索共享相同RestaurantID的菜单项的列表。因此,例如:由于我正在查询RestuarantID == 1的项目,因此它将从数据库中检索9个项目。我在下面的函数中很难选择常用值:

  public async Task<IActionResult> GetRestaurantOneVals()
        {
            int id = 1;              //Restuarant one's ID is == 1

            var menuItem = await _context.MenuItems
                .Include(s => s.Restaurant)
                .AsNoTracking()
                .FirstOrDefaultAsync(nameof => nameof.Restaurant.ID == id);
            
            var restaurantList = menuItem;
            
            return View(menuItem);
        }

这是完整的控制器:

MenuItemsController.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.EntityFrameworkCore;
using EasyEats.Data;
using EasyEats.Models;

namespace EasyEats.Controllers
{
    public class MenuItemsController : Controller
    {
        private readonly EasyEatsContext _context;

        public MenuItemsController(EasyEatsContext context)
        {
            _context = context;
        }

        // GET: MenuItems
        public async Task<IActionResult> Index()
        {
            var easyEatsContext = _context.MenuItems.Include(m => m.Restaurant);
            return View(await easyEatsContext.ToListAsync());
        }

        // GET: MenuItems/Details/5
        public async Task<IActionResult> Details(int? id)
        {
            if (id == null)
            {
                return NotFound();
            }

            var menuItem = await _context.MenuItems
                .Include(m => m.Restaurant)
                .FirstOrDefaultAsync(m => m.ID == id);
            if (menuItem == null)
            {
                return NotFound();
            }

            return View(menuItem);
        }

        public async Task<IActionResult> GetRestaurantOneVals()
        {
            int id = 1;                  //Restuarant one's ID is == 1

            var pleaseGod = await _context.MenuItems

            var menuItem = await _context.MenuItems
                .Include(s => s.Restaurant)
                .AsNoTracking()
                .FirstOrDefaultAsync(nameof => nameof.Restaurant.ID == id);
            
            var restaurantList = menuItem;
            
            return View(menuItem);
        }

        // GET: MenuItems/Create
        public IActionResult Create()
        {
            ViewData["RestaurantID"] = new SelectList(_context.Restaurants, "ID", "ID");
            return View();
        }

        // POST: MenuItems/Create
     
        [HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> Create([Bind("ID,ItemName,ItemDescription,ItemImagePath,Price,RestaurantID")] MenuItem menuItem)
        {
            if (ModelState.IsValid)
            {
                _context.Add(menuItem);
                await _context.SaveChangesAsync();
                return RedirectToAction(nameof(Index));
            }
            ViewData["RestaurantID"] = new SelectList(_context.Restaurants, "ID", "ID", menuItem.RestaurantID);
            return View(menuItem);
        }

        // GET: MenuItems/Edit/5
        public async Task<IActionResult> Edit(int? id)
        {
            if (id == null)
            {
                return NotFound();
            }

            var menuItem = await _context.MenuItems.FindAsync(id);
            if (menuItem == null)
            {
                return NotFound();
            }
            ViewData["RestaurantID"] = new SelectList(_context.Restaurants, "ID", "ID", menuItem.RestaurantID);
            return View(menuItem);
        }

        // POST: MenuItems/Edit/5
      
        [HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> Edit(int id, [Bind("ID,ItemName,ItemDescription,ItemImagePath,Price,RestaurantID")] MenuItem menuItem)
        {
            if (id != menuItem.ID)
            {
                return NotFound();
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(menuItem);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!MenuItemExists(menuItem.ID))
                    {
                        return NotFound();
                    }
                    else
                    {
                        throw;
                    }
                }
                return RedirectToAction(nameof(Index));
            }
            ViewData["RestaurantID"] = new SelectList(_context.Restaurants, "ID", "ID", menuItem.RestaurantID);
            return View(menuItem);
        }

        // GET: MenuItems/Delete/5
        public async Task<IActionResult> Delete(int? id)
        {
            if (id == null)
            {
                return NotFound();
            }

            var menuItem = await _context.MenuItems
                .Include(m => m.Restaurant)
                .FirstOrDefaultAsync(m => m.ID == id);
            if (menuItem == null)
            {
                return NotFound();
            }

            return View(menuItem);
        }

        // POST: MenuItems/Delete/5
        [HttpPost, ActionName("Delete")]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> DeleteConfirmed(int id)
        {
            var menuItem = await _context.MenuItems.FindAsync(id);
            _context.MenuItems.Remove(menuItem);
            await _context.SaveChangesAsync();
            return RedirectToAction(nameof(Index));
        }

        private bool MenuItemExists(int id)
        {
            return _context.MenuItems.Any(e => e.ID == id);
        }
    }
}

MenuItem.cs模型

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.ComponentModel.DataAnnotations;

namespace EasyEats.Models
{
    public class MenuItem
    {
        public int ID { get; set; }

        [Display(Name = "Item Name")]
        public string ItemName { get; set; }

        [Display(Name = "Item Description")]
        public string ItemDescription { get; set; }
        public string ItemImagePath { get; set; }
        public decimal Price { get; set; }
        public int RestaurantID { get; set; }
        public virtual Restaurant Restaurant { get; set; }
        public virtual CartItem CartItem { get; set; }

    }
}
詹森

您正在使用FirstOrDefaultAsync()它将检索与给定参数匹配的第一个元素,但是您想返回与参数匹配的整个列表。更改:

var menuItem = await _context.MenuItems
             .Include(s => s.Restaurant)
             .AsNoTracking()
             .FirstOrDefaultAsync(nameof => nameof.Restaurant.ID == id);

为此在您的GetRestaurantOneVals()方法:

var menuItems = await _context.MenuItems
              .Include(s => s.Restaurant)
              .AsNoTracking()
              .Where(x => x.Restaurant.Id == id)
              .ToListAsync();

.Where()将获取与给定语句匹配的所有对象,并ToList()创建List<T>查询外的对象。

然后简单地return View(menuItems);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ASP.Net Core Web API中的数据库查询过滤

来自分类Dev

ASP.Net Core Web API中的数据库查询过滤

来自分类Dev

Asp.NET Core 中的关系数据库 SQL 查询

来自分类Dev

登录到ASP.NET Core MVC 6中的数据库

来自分类Dev

在ASP.NET Core MVC中通过控制器从数据库读取信息

来自分类Dev

从ASP.NET Core MVC中的SQL数据库访问用户ICollection

来自分类Dev

在asp net core实体框架mvc中从数据库绑定菜单和子菜单

来自分类Dev

使用Blazor在ASP.NET CORE中更新数据库后如何刷新网页

来自分类Dev

如何从 Angular 数据库中的 ASP.NET Core API 下载并保存 pdf 文件?

来自分类Dev

数据库的ASP.NET Core ILoggerProvider

来自分类Dev

从外部数据库登录 ASP.NET Core 2.2

来自分类Dev

与ASP.NET MVC BeginExecuteCore等效的ASP.NET Core

来自分类Dev

在ASP.NET Core 3.1中扩展IdentityUser之后,如何解决EF Core数据库错误?

来自分类Dev

ASP.NET Core MVC,从数据库获取文件,并呈现为图像

来自分类Dev

ASP.NET Core 2.1 MVC - 将每个请求记录到数据库

来自分类Dev

如何添加表和关系到生成的Asp.Net Core MVC Identity数据库?

来自分类Dev

ASP.NET MVC 6(ASP.NET Core或ASP.NET5)中的友好URL

来自分类Dev

ASP.NET Core MVC视图附件

来自分类Dev

ASP NET Core服务特定的html页面

来自分类Dev

如何调试ASP.NET Core MVC数据绑定?

来自分类Dev

Asp.Net Core 3.1数据已检索但未保存到数据库中

来自分类Dev

ASP.NET Core在我的属性模型中添加计算并将其作为数据库中的列

来自分类Dev

如何从ASP.NET Core中的实体框架中的数据库更新VS 2019中的模型

来自分类Dev

Asp.net Core如何呈现视图

来自分类Dev

如何访问cookie asp.net core

来自分类Dev

ASP.NET Core中的属性

来自分类Dev

ASP.Net Core中的动态路由

来自分类Dev

ASP.NET Core中的加密配置

来自分类Dev

Asp.net Core中的UserHostAddress

Related 相关文章

  1. 1

    ASP.Net Core Web API中的数据库查询过滤

  2. 2

    ASP.Net Core Web API中的数据库查询过滤

  3. 3

    Asp.NET Core 中的关系数据库 SQL 查询

  4. 4

    登录到ASP.NET Core MVC 6中的数据库

  5. 5

    在ASP.NET Core MVC中通过控制器从数据库读取信息

  6. 6

    从ASP.NET Core MVC中的SQL数据库访问用户ICollection

  7. 7

    在asp net core实体框架mvc中从数据库绑定菜单和子菜单

  8. 8

    使用Blazor在ASP.NET CORE中更新数据库后如何刷新网页

  9. 9

    如何从 Angular 数据库中的 ASP.NET Core API 下载并保存 pdf 文件?

  10. 10

    数据库的ASP.NET Core ILoggerProvider

  11. 11

    从外部数据库登录 ASP.NET Core 2.2

  12. 12

    与ASP.NET MVC BeginExecuteCore等效的ASP.NET Core

  13. 13

    在ASP.NET Core 3.1中扩展IdentityUser之后,如何解决EF Core数据库错误?

  14. 14

    ASP.NET Core MVC,从数据库获取文件,并呈现为图像

  15. 15

    ASP.NET Core 2.1 MVC - 将每个请求记录到数据库

  16. 16

    如何添加表和关系到生成的Asp.Net Core MVC Identity数据库?

  17. 17

    ASP.NET MVC 6(ASP.NET Core或ASP.NET5)中的友好URL

  18. 18

    ASP.NET Core MVC视图附件

  19. 19

    ASP NET Core服务特定的html页面

  20. 20

    如何调试ASP.NET Core MVC数据绑定?

  21. 21

    Asp.Net Core 3.1数据已检索但未保存到数据库中

  22. 22

    ASP.NET Core在我的属性模型中添加计算并将其作为数据库中的列

  23. 23

    如何从ASP.NET Core中的实体框架中的数据库更新VS 2019中的模型

  24. 24

    Asp.net Core如何呈现视图

  25. 25

    如何访问cookie asp.net core

  26. 26

    ASP.NET Core中的属性

  27. 27

    ASP.Net Core中的动态路由

  28. 28

    ASP.NET Core中的加密配置

  29. 29

    Asp.net Core中的UserHostAddress

热门标签

归档