簡體   English   中英

FOREIGN_KEY約束異常

[英]FOREIGN_KEY constraint exception

我有一個帶ac#代碼的asp.net應用程序,並使用linq-to-entities連接到SQL數據庫...當我嘗試對以下代碼進行“ SaveChanges()”時,出現異常(在下面列出)。 有什么想法嗎?

private void setNewRide(long newRideID, int carNum)
        {
            handleCompletedRide(carNum);

            using (myEntities = new RamRideOpsEntities())
            {
                Vehicle assignedCar = myEntities.Vehicles.FirstOrDefault(car => car.CarNum == carNum);
                Ride newRide = myEntities.Rides.FirstOrDefault(ride => ride.identity == newRideID);

                if (assignedCar != null && newRide != null)
                {
                    vs_CurrentRideId = newRide.identity; //Save current ride to ViewState
                    vs_CarStatus = assignedCar.Status; //Save old status to ViewState

                    assignedCar.Status = "EnRoute";
                    assignedCar.CurrPassengers = newRide.NumPatrons;
                    assignedCar.StartAdd = newRide.PickupAddress;
                    assignedCar.EndAdd = newRide.DropoffAddress;
                    assignedCar.CurrentAdd = newRide.DropoffAddress;

                    assignedCar.Rides.Add(newRide);

                    newRide.TimeDispatched = DateTime.Now;
                    newRide.WaitTime = (((DateTime)newRide.TimeDispatched) - ((DateTime)newRide.TimeOfCall));
                    newRide.AssignedCar = carNum;
                    newRide.Status = "EnRoute";

                    myEntities.SaveChanges(); //EXCEPTION HERE!
                    SelectCarUP.DataBind();
                    SelectCarUP.Update();                    
                }
            }
        }

例外情況:

UPDATE語句與FOREIGN KEY約束\\“ FK_Rides_Vehicles \\”沖突。 在數據庫\\“ CWIS29RamRideOps \\”,表\\“ dbo.Vehicles \\”,“ Identity”列中發生了沖突。\\ r \\ n該語句已終止。

數據庫:

在此處輸入圖片說明

這行:

assignedCar.Rides.Add(newRide);

被轉換為SQL-INSERT-當您已經具有相同ID的記錄時。 確定您要執行的操作:插入新游樂設施(在這種情況下,您應該將newRide的ID設為NULL)或更新(在這種情況下,您應該只注釋掉該行;更改將被保存)。

像這樣更改代碼:

newRide.TimeDispatched = DateTime.Now;
newRide.WaitTime = (((DateTime)newRide.TimeDispatched) - ((DateTime)newRide.TimeOfCall));
newRide.AssignedCar = carNum;
newRide.Status = "EnRoute";

assignedCar.Status = "EnRoute";
assignedCar.CurrPassengers = newRide.NumPatrons;
assignedCar.StartAdd = newRide.PickupAddress;
assignedCar.EndAdd = newRide.DropoffAddress;
assignedCar.CurrentAdd = newRide.DropoffAddress;
assignedCar.Rides = newRide; // Your First Change here

myEntities.SaveChanges();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM