我是asp.net,C#和sql的新手,可以使用一些指导..我正在使用:下面:db与linq-to-entities框架。我需要将特定的“骑行”与特定的“车辆”相关联,但我不确定如何继续。我在两个对象之间设置了导航属性,但现在需要让车辆保持对其所乘坐的列表的引用。我是否需要在车辆中使用单独的列来保存此列表?有人可以告诉我完成此操作的语法吗?
以下是我目前的代码,在需要帮助的两个地方发表评论:
private void setNewRide(Ride newRide, int carNum)
{
using (myEntities = new RamRideOpsEntities())
{
var assignedCar = (from car in myEntities.Vehicles
where (car.CarNum == carNum)
select car).FirstOrDefault();
if (assignedCar != null && newRide != null)
{
Ride lastRide = assignedCar.Rides.LastOrDefault(); //HERE IS WHERE I NEED TO LOAD THE MOST RECENT 'RIDE' FOR THIS CAR, IS THIS CORRECT???
if (lastRide != null)
{
lastRide.Status = "Completed";
assignedCar.numRides = assignedCar.numRides + 1;
lastRide.TimeDroppedOff = DateTime.Now;
TimeSpan duration = (lastRide.TimeDroppedOff - lastRide.TimeDispatched).Value;
lastRide.ServiceTime = duration;
if (assignedCar.AvgRideTime == null)
{
assignedCar.AvgRideTime = duration;
}
else
{
assignedCar.AvgRideTime = TimeSpan.FromSeconds(( ((TimeSpan)assignedCar.AvgRideTime).Seconds + duration.Seconds) / assignedCar.numRides);
}
}
assignedCar.Status = "EnRoute";
assignedCar.CurrPassengers = newRide.NumPatrons;
assignedCar.StartAdd = newRide.PickupAddress;
assignedCar.EndAdd = newRide.DropoffAddress;
//HERE IS WHERE I NEED TO ADD THE 'newRide' OBJECT TO THE LIST OF RIDES IN THE 'assignedCar' ..SYNTAX???
newRide.TimeDispatched = DateTime.Now;
newRide.AssignedCar = carNum;
newRide.Status = "EnRoute";
myEntities.SaveChanges();
SelectCarUP.DataBind();
SelectCarUP.Update();
}
}
}
答案 0 :(得分:4)
有关:
// HERE IS WHERE I NEED TO LOAD THE MOST RECENT 'RIDE' FOR THIS CAR, IS
// THIS CORRECT???
Ride lastRide = assignedCar.Rides.LastOrDefault();
使用:
Ride lastRide = assignedCar.Rides
.OrderByDescending(r => r.TimeDispatched)
.FirstOrDefault();
......以及:
// HERE IS WHERE I NEED TO ADD THE 'newRide' OBJECT TO THE LIST OF RIDES
// IN THE 'assignedCar' ..SYNTAX???
...您的Vehicle
实体已根据您的模型图具有Rides
集合属性,因此您应该只能说:
assignedCar.Rides.Add(newRide);
最后 - 纯粹作为个人品味的问题 - 而不是:
var assignedCar = (from car in myEntities.Vehicles
where (car.CarNum == carNum)
select car).FirstOrDefault();
我会用:
var assignedCar = myEntities.Vehicles
.FirstOrDefault(car => car.CarNum == carNum);
答案 1 :(得分:1)
在我看来,以下文章是开始的好地方: