第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從存儲過程結(jié)果實(shí)體框架創(chuàng)建列表

如何從存儲過程結(jié)果實(shí)體框架創(chuàng)建列表

C#
慕桂英3389331 2022-06-19 09:50:52
我正在使用 ASP.NET MVC 和 EF 創(chuàng)建一個車輛預(yù)訂應(yīng)用程序,如果需要,用戶可以在一個日期時間預(yù)訂多輛車輛。我創(chuàng)建了一個存儲過程來防止重復(fù)預(yù)訂車輛,但是在弄清楚如何將結(jié)果添加到列表中時遇到了麻煩。示例:我想為 2018 年 12 月 18 日的 12:00 到 13:00 保留 Vehicle#1 和 Vehicle#2....存儲過程轉(zhuǎn)到 db 以發(fā)現(xiàn) Vehicle#1 已經(jīng)從 12:00 保留至 13:00,但未預(yù)留車輛#2。由于foreachthat 運(yùn)行,alreadyReservedVehicle返回結(jié)果,.Count() = 0因?yàn)樗吹阶詈笠粋€結(jié)果,即 Vehicle#2 未被保留。它應(yīng)該顯示一條錯誤消息,說不允許重復(fù)預(yù)訂,因?yàn)檐囕v#1 已經(jīng)預(yù)訂,但它不計(jì)算該預(yù)訂。有沒有辦法收集這兩個結(jié)果并告訴應(yīng)用程序因?yàn)檫@ 2 輛車中的一輛被預(yù)訂,所以這兩輛車都不能被預(yù)訂?public ActionResult Create([Bind(Include = "ID,StartDate,EndDate,RequestorID,Destination,PurposeOfTrip,TransportStudentsFG,LastChangedBy,LastChangedDate,VehicleList,ThemeColor")] Reservations reservation){    if (ModelState.IsValid)    {        var selectedVehicles = reservation.VehicleList.Where(x => x.IsChecked == true).ToList();        List<usp_PreventDoubleBooking_Result> alreadyReservedVehicle = null;        // get each vehicle that was selected to be reserved then check db to make sure it is available        foreach (var selectedVehicle in selectedVehicles)         {                         using (VehicleReservationEntities db = new VehicleReservationEntities())            {                alreadyReservedVehicle = db.usp_PreventDoubleBooking(selectedVehicle.ID, reservation.StartDate, reservation.EndDate).ToList();                                         }        }        if (alreadyReservedVehicle.Count() == 0) // create a new reservation if the vehicle is available at the selected date and time        {            db.Reservations.Add(reservation);            reservation.LastChangedDate = DateTime.Now;            db.SaveChanges();                }    }}以上是我到目前為止所擁有的,我知道我已經(jīng)接近了,因?yàn)榧僭O(shè)用戶只是試圖預(yù)訂一輛已經(jīng)預(yù)訂的車輛,我所擁有的將起作用。當(dāng)他們嘗試為多輛車創(chuàng)建預(yù)訂時,代碼僅計(jì)算列表中的最后一輛車,并將其用作確定是否保存預(yù)訂的結(jié)果。我考慮將條件語句移動到 foreach 中,但我不希望為每輛選擇的車輛保存預(yù)訂......這沒有任何意義,因?yàn)橹挥?1 個預(yù)訂要保存,它只是有多個可以與之關(guān)聯(lián)的車輛。那么如何才能alreadyReservedVehicle List將每個結(jié)果添加到列表中,以便確定List實(shí)際的 a是否Count為 0?
查看完整描述

2 回答

?
catspeake

TA貢獻(xiàn)1111條經(jīng)驗(yàn) 獲得超0個贊

public ActionResult Create(/*Bind attribute omitted*/ Reservations reservation)

{

    if (ModelState.IsValid)

    {

        // Is 'IsChecked' nullable? If not, "== true" is redundant.

        var selectedVehicles = reservation.VehicleList.Where(x => x.IsChecked == true).ToList();


        // get each vehicle that was selected to be reserved then check db to make sure it is available

        using (VehicleReservationEntities db = new VehicleReservationEntities())

        {

            foreach (var selectedVehicle in selectedVehicles)

            {

                // 'alreadyReservedVehicle' can be declared here because you don't need to let it

                // out of its cage, I mean the loop.

                List<usp_PreventDoubleBooking_Result> alreadyReservedVehicle =

                    db.usp_PreventDoubleBooking(selectedVehicle.ID, reservation.StartDate, reservation.EndDate).ToList();


                if (alreadyReservedVehicle.Count() > 0)

                {

                    //return error message on page if vehicle is already reserved

                    TempData["Error"] = "Double booking of vehicles is not allowed. Please choose another vehicle/time. Check the availability timeline before reserving to ensure there are no errors. Thank you.";

                    return RedirectToAction("Create");

                }

            }

        }


        // create a new reservation if the vehicle is available at the selected date and time

        db.Reservations.Add(reservation);

        reservation.LastChangedDate = DateTime.Now;

        db.SaveChanges();

    }

}


查看完整回答
反對 回復(fù) 2022-06-19
?
千萬里不及你

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個贊

您可以執(zhí)行以下操作:

var preventDoubleBookingList= await context.Database.SqlQuery<usp_PreventDoubleBooking>("sproc_name", prams_here).ToListAsync();

您必須創(chuàng)建一個與存儲過程匹配的模型。


查看完整回答
反對 回復(fù) 2022-06-19
  • 2 回答
  • 0 關(guān)注
  • 113 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號