Я новичок в asp.net, C# и sql и могу использовать некоторые рекомендации. Я использую: ниже: db с инфраструктурой linq-to-entities. Мне нужно связать конкретный «Ride» с конкретным «Транспортным средством», но я точно не знаю, как это сделать. Я установил свойство навигации между этими двумя объектами, но теперь нужно, чтобы автомобиль держал ссылку на список пройденных маршрутов. Нужен ли мне отдельный столбец в транспортном средстве, чтобы провести этот список аттракционов? Может кто-нибудь, пожалуйста, покажет мне синтаксис для этого?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();
}
}
}
Если EF не делает что-то умный, о котором я не подозреваю, строка, которую вы прокомментировали как проблему, опирается на мифический естественный порядок, которого нет (по крайней мере, в том виде, в котором он больше всего верит) в SQL Server. Порядок этих Rides основан на том, что страница Sql-сервера вставляет запись, которая является только детерминированной, если вы знаете оставшееся на странице место и точный размер вставленных строк. Это маловероятно, поэтому используйте предложение 'OrderBy'. Вернемся к исходному вопросу, что не так с строкой кода, который вы прокомментировали? Исключение? Ничего не вернулся? – Smudge202