Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 参数1:无法从';System.Threading.Tasks.Task<;项目.模型.预订>';预订_C#_Asp.net_Asp.net Mvc_Entity Framework_Asp.net Mvc 5 - Fatal编程技术网

C# 参数1:无法从';System.Threading.Tasks.Task<;项目.模型.预订>';预订

C# 参数1:无法从';System.Threading.Tasks.Task<;项目.模型.预订>';预订,c#,asp.net,asp.net-mvc,entity-framework,asp.net-mvc-5,C#,Asp.net,Asp.net Mvc,Entity Framework,Asp.net Mvc 5,我正在学校项目中工作,我正在尝试在我的存储库类中实现异步方法,并且在我的API中针对POST方法得到以下错误:参数1:无法从“System.Threading.Tasks.Task”转换为project.Models.Booking 有人能帮我解决这个错误吗 我的存储库方法是这样的: public async Task<Booking>CreateBooking(Booking inBooking) { Booking booking = new Bookin

我正在学校项目中工作,我正在尝试在我的存储库类中实现异步方法,并且在我的API中针对POST方法得到以下错误:参数1:无法从“System.Threading.Tasks.Task”转换为project.Models.Booking

有人能帮我解决这个错误吗

我的存储库方法是这样的:

    public async Task<Booking>CreateBooking(Booking inBooking) {
        Booking booking = new Booking();

        booking.BookingId = ApplicationDbContext.Bookings.Count();
        booking.UserName = inBooking.UserName;
        booking.UserMail = inBooking.UserMail;
        booking.UserMobile = inBooking.UserMobile;
        booking.Available = false;
        booking.StartTime = inBooking.StartTime;
        booking.EndTime = inBooking.EndTime;
        booking.Date = inBooking.Date;

        Add(booking);
        return await Task.FromResult(booking);
        //return booking;
    }
 [Route("api/PostBooking")]
        [HttpPost]
        public async Task<IHttpActionResult> PostBooking(BookingSystemServiceBookingViewModel inBooking)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest("Invalid data");
            }

            var booking =  inBooking.booking;

            booking.StartTime = inBooking.startTime;
            booking.EndTime = inBooking.startTime.AddMinutes(inBooking.service.Duration);

             uw.Services.AddBooking(uw.Bookings.CreateBooking(booking), inBooking.service.ServiceId);
            uw.Complete();

            return Ok();
        }
public async TaskCreateBooking(预订内预订){
预订=新预订();
booking.BookingId=ApplicationDbContext.Bookings.Count();
booking.UserName=inBooking.UserName;
booking.UserMail=inBooking.UserMail;
booking.UserMobile=inBooking.UserMobile;
预订。可用=错误;
booking.StartTime=inBooking.StartTime;
booking.EndTime=inBooking.EndTime;
booking.Date=in booking.Date;
添加(预订);
返回等待任务。FromResult(预订);
//回程订票;
}
我的Post方法是这样的:

    public async Task<Booking>CreateBooking(Booking inBooking) {
        Booking booking = new Booking();

        booking.BookingId = ApplicationDbContext.Bookings.Count();
        booking.UserName = inBooking.UserName;
        booking.UserMail = inBooking.UserMail;
        booking.UserMobile = inBooking.UserMobile;
        booking.Available = false;
        booking.StartTime = inBooking.StartTime;
        booking.EndTime = inBooking.EndTime;
        booking.Date = inBooking.Date;

        Add(booking);
        return await Task.FromResult(booking);
        //return booking;
    }
 [Route("api/PostBooking")]
        [HttpPost]
        public async Task<IHttpActionResult> PostBooking(BookingSystemServiceBookingViewModel inBooking)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest("Invalid data");
            }

            var booking =  inBooking.booking;

            booking.StartTime = inBooking.startTime;
            booking.EndTime = inBooking.startTime.AddMinutes(inBooking.service.Duration);

             uw.Services.AddBooking(uw.Bookings.CreateBooking(booking), inBooking.service.ServiceId);
            uw.Complete();

            return Ok();
        }
[路线(“api/预订后”)]
[HttpPost]
公共异步任务PostBooking(BookingSystems服务BookingViewModel inBooking)
{
如果(!ModelState.IsValid)
{
返回请求(“无效数据”);
}
var记账=inBooking.booking;
booking.StartTime=inBooking.StartTime;
booking.EndTime=inBooking.startTime.AddMinutes(inBooking.service.Duration);
uw.Services.AddBooking(uw.Bookings.CreateBooking(booking)、inBooking.service.ServiceId);
uw.Complete();
返回Ok();
}
我在以下位置收到错误消息:uw.Services.AddBooking(uw.Bookings.CreateBooking(booking),inBooking.service.ServiceId)`

尝试在我的存储库类中实现异步方法

使事情异步化的最好方法不是从“外到内”。也就是说,您不希望在控制器操作开始时说“如何使其异步?”。相反,您希望从最低级别的API开始,并说“这应该是异步的”(即,它是基于i/O的),然后让异步从那里发展起来

如果
Add
确实插入了数据库,那么这将是第一个异步的方法。然后您等待
AddAsync
方法,异步性从
AddAsync
增长到
createbookingsync

public async Task<Booking> CreateBookingAsync(Booking inBooking) {
  Booking booking = new Booking();

  ...

  await AddAsync(booking);
  return booking;
}

[Route("api/PostBooking")]
[HttpPost]
public async Task<IHttpActionResult> PostBooking(BookingSystemServiceBookingViewModel inBooking)
{
  ...

  uw.Services.AddBooking(await uw.Bookings.CreateBookingAsync(booking), inBooking.service.ServiceId);
  uw.Complete();

  return Ok();
}

要返回
任务
方法的结果,您需要
等待
结果
uw.Services.AddBooking(等待uw.Bookings.CreateBooking(booking)、inBooking.service.ServiceId)返回等待任务中删除“等待”。从结果(预订)
,也是来自
公共异步任务CreateBooking(Booking inBooking)
的“异步”,您应该很好。