私はasp.net、C#、SQLの新機能で、いくつかのガイダンスを使用することができます。linq-to-entitiesフレームワークで以下を使用しています。特定の「乗り物」を特定の「乗り物」に関連付ける必要がありますが、進める方法が正確にわかりません。私は2つのオブジェクトの間にナビゲーションプロパティを設定しましたが、現在は乗り物のリストへの参照を保持する必要があります。この乗り物のリストを保持するには、車両に別の列が必要ですか?誰か私にこれを達成するための構文を教えてもらえますか?ここでLINQ to Entities外部キーの関連
は、私が現在持っているコードは、私は助けを必要とする2つのスポットでのコメントで、次のとおりです。私の意見では
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内に存在しない(少なくとも最も信じられている形式で)神話的な自然順序に依存しているということです。これらの乗り物の順序は、ページSqlサーバーがレコードを挿入することに基づいています。これは、ページ上に残っているスペースと挿入された行の正確なサイズを知っている場合にのみ決定的です。これは起こりそうもないので、 'OrderBy'節を使用してください。元の質問に戻って、あなたがコメントしたコード行に何が間違っていますか?例外?何も返されませんか? – Smudge202