我正在使用ASP.NET核心,并使用Postman WebAPI对其进行测试。
我正尝试计算LINQ查询,如果标题和请求在数据库中包含字符串“ Hope”和“ Something”,则用户无法发布相同的数据。如何创建查询当用户在相同属性中发布相同字符串时,会显示错误请求?
在控制器中直接执行此操作时,您需要存储库吗?
下面是我的控制器,我所需要的只是能够查询title属性并对其进行查询,因此只有用户在数据库中输入不同的字符串。我已经用邮递员进行了测试,它显示200OK,当在邮递员中输入相同的字符串时,它应该显示Bad Request
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Authorization;
using BookingApp.API.Data;
using System.Threading.Tasks;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using BookingApp.API.Models;
using Microsoft.EntityFrameworkCore;
namespace BookingApp.API.Controllers
{
[Authorize]
[Route("api/[controller]")]
[ApiController]
public class BookController : ControllerBase
{
private readonly DataContext _context;
public BookController(DataContext context)
{
_context = context;
}
[AllowAnonymous]
[HttpGet]
public async Task<IActionResult> GetBooking()
{
var Booking = await _context.bookings.Include(c => c.Customer).ToListAsync();
return Ok(Booking);
}
[AllowAnonymous]
[HttpGet("{id}")]
public async Task<IActionResult> GetBooking(int id)
{
var Booking = await _context.bookings.FirstOrDefaultAsync(x => x.Id == id);
return Ok(Booking);
}
[AllowAnonymous]
[HttpPost]
public async Task<IActionResult> PostBook(Booking bookings, string Title)
{
if(ModelState.IsValid)
{
var SearchData = await _context.bookings.Where(x => x.Title == Title).SingleOrDefaultAsync();
if (SearchData != null)
return BadRequest("bad request");
}
_context.bookings.Add(bookings);
_context.SaveChanges();
return Ok();
}
// PUT api/values/5
// [HttpPut("{id}")]
[AllowAnonymous]
[HttpPut("{Id}")]
public Booking PutBooking(int Id, [FromBody] Booking bookings )
{
var bookingsInDb = _context.bookings.SingleOrDefault(b => b.Id == Id);
bookingsInDb.Title = bookings.Title;
bookingsInDb.Date = bookings.Date;
bookingsInDb.Request = bookings.Request;
_context.SaveChanges();
return bookingsInDb;
}
//
//
// }
{
}
}
}
这是我的预订模式
using System;
namespace BookingApp.API.Models
{
public class Booking
{
public int Id { get; set; }
public string Title { get; set; }
public DateTime Date { get; set; }
public string Request { get; set; }
public int NoPeople { get; set; }
public Customer Customer { get; set;}
}
}