C# 外键约束异常
我有一个asp.net应用程序,后面有一个c#代码,连接到一个SQL数据库,使用linq to entities。。。当我尝试在下面的代码上“SaveChanges()”时,我得到一个异常(如下所列)。有什么想法吗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
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)。我希望你能理解。试试看。是的,你明白了,忘记了一个改变。我在数据库中做了一个改变,卡努姆赋值现在是多余的。谢谢