C# 外键约束异常

C# 外键约束异常,c#,asp.net,sql,visual-studio-2010,linq-to-entities,C#,Asp.net,Sql,Visual Studio 2010,Linq To Entities,我有一个asp.net应用程序,后面有一个c#代码,连接到一个SQL数据库,使用linq to entities。。。当我尝试在下面的代码上“SaveChanges()”时,我得到一个异常(如下所列)。有什么想法吗 private void setNewRide(long newRideID, int carNum) { handleCompletedRide(carNum); using (myEntities = new Ra

我有一个asp.net应用程序,后面有一个c#代码,连接到一个SQL数据库,使用linq to entities。。。当我尝试在下面的代码上“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语句与外键约束冲突 \“FK_骑乘车辆\”。数据库中发生冲突 \“CWIS29RamRideOps\”,表“dbo.Vehicles\”,第列 “标识”。\r\n语句已终止

争议裁决委员会:

这一行:

assignedCar.Rides.Add(newRide);
转换为SQL-INSERT-当您已经有一个具有相同ID的记录时。决定要执行的操作:插入一个新的骑乘(在这种情况下,您应该取消newRide的ID),或更新它(在这种情况下,您应该只注释该行;更改将被保存)。

此行:

assignedCar.Rides.Add(newRide);

转换为SQL-INSERT-当您已经有一个具有相同ID的记录时。决定您要执行的操作:插入一个新的骑乘(在这种情况下,您应该将newRide的ID置为空),或更新它(在这种情况下,您应该只注释该行;更改将被保存)。

像这样更改代码:

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();

按如下方式更改代码:

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();

我正在尝试更新。听起来这是一个合理的论据。但是我删除了这一行,仍然得到了同样的例外。对不起;太晚了;我告诉过你一些毫无意义的事情;请忽略。我把
assignedCar
myenties
搞混了。不幸的是,我现在想不出什么。这行怎么样:
newRide.AssignedCar=carNum。我认为它是多余的
assignedCar.Rides.Add(newRide)。试着评论一下,看看会发生什么。如果仍然不是这样,则将整个已分配的车辆分配给newRide.assignedCar,而不是(将assignedCar的Id分配给newRide.WhateVertherAssignedCaroObjectisButNotCarid)。我希望你能理解。试试看。是的,你明白了,忘记了一个改变。我在数据库中做了一个改变,卡努姆赋值现在是多余的。谢谢我正在尝试更新。听起来这是一个合理的论据。但是我删除了这一行,仍然得到了同样的例外。对不起;太晚了;我告诉过你一些毫无意义的事情;请忽略。我把
assignedCar
myenties
搞混了。不幸的是,我现在想不出什么。这行怎么样:
newRide.AssignedCar=carNum。我认为它是多余的
assignedCar.Rides.Add(newRide)。试着评论一下,看看会发生什么。如果仍然不是这样,则将整个已分配的车辆分配给newRide.assignedCar,而不是(将assignedCar的Id分配给newRide.WhateVertherAssignedCaroObjectisButNotCarid)。我希望你能理解。试试看。是的,你明白了,忘记了一个改变。我在数据库中做了一个改变,卡努姆赋值现在是多余的。谢谢