Add VehiclePreviousLog
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
namespace MileageTraker.Web.Migrations
|
||||
{
|
||||
using System.Data.Entity.Migrations;
|
||||
|
||||
public partial class AddVehiclePreviousLog : DbMigration
|
||||
{
|
||||
public override void Up()
|
||||
{
|
||||
AddColumn("Log", "VehiclePreviousLogId", c => c.Int());
|
||||
AddForeignKey("Log", "VehiclePreviousLogId", "Log", "LogId");
|
||||
CreateIndex("Log", "VehiclePreviousLogId");
|
||||
var populateSql =
|
||||
@"WITH summary AS (
|
||||
SELECT
|
||||
ROW_NUMBER() OVER (PARTITION BY l.LogId ORDER BY l.LogId ASC, pl.EndOdometer DESC, pl.Created DESC) AS rk,
|
||||
l.LogId, pl.LogId as PreviousLogId
|
||||
FROM
|
||||
[Log] as l,
|
||||
[Log] as pl
|
||||
WHERE
|
||||
pl.VehicleId = l.VehicleId
|
||||
AND ((pl.[Date] <= l.[Date]
|
||||
AND pl.EndOdometer < l.EndOdometer)
|
||||
OR (
|
||||
pl.EndOdometer < l.EndOdometer
|
||||
AND pl.Created < l.Created
|
||||
))
|
||||
)
|
||||
UPDATE [Log]
|
||||
SET [Log].VehiclePreviousLogId = summary.PreviousLogId
|
||||
FROM summary
|
||||
WHERE summary.rk = 1
|
||||
AND [Log].LogId = summary.LogId
|
||||
";
|
||||
Sql(populateSql);
|
||||
}
|
||||
|
||||
public override void Down()
|
||||
{
|
||||
DropIndex("Log", new[] { "VehiclePreviousLogId" });
|
||||
DropForeignKey("Log", "VehiclePreviousLogId", "Log");
|
||||
DropColumn("Log", "VehiclePreviousLogId");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user