using Microsoft.EntityFrameworkCore.Migrations; using System; #nullable disable namespace gehGassi.Persistence.Migrations { public partial class vw_RatingsWithNamesAdded : Migration { protected override void Up(MigrationBuilder migrationBuilder) { var viewName = "vw_RatingsWithNames"; var sql = @"SELECT R.*, CONCAT(A.FirstName, ' ', A.LastName) AS FromName, A.Photo AS FromPhoto, TargetName = CASE WHEN R.TargetType = 0 THEN CONCAT(T.FirstName, ' ', T.LastName) WHEN R.TargetType = 1 THEN CONCAT(T.FirstName, ' ', T.LastName) WHEN R.TargetType = 2 THEN D.Name ELSE '' END, TargetPhoto = CASE WHEN R.TargetType = 0 THEN T.Photo WHEN R.TargetType = 1 THEN T.Photo WHEN R.TargetType = 2 THEN D.Photo ELSE '' END FROM Ratings R LEFT JOIN AppUsers A ON R.FromId = A.Id LEFT JOIN AppUsers T ON R.TargetId = T.Id LEFT JOIN Dogs D ON R.TargetId = D.Id"; migrationBuilder.Sql($"IF(exists (SELECT 1 FROM sys.views WHERE Name = '{viewName}')) BEGIN DROP VIEW [dbo].[{viewName}] END {Environment.NewLine} GO"); migrationBuilder.Sql($"CREATE VIEW [dbo].[{viewName}] AS {sql} {Environment.NewLine} GO"); } protected override void Down(MigrationBuilder migrationBuilder) { var viewName = "vw_RatingsWithNames"; migrationBuilder.Sql($"IF(exists (SELECT 1 FROM sys.views WHERE Name = '{viewName}')) BEGIN DROP VIEW [dbo].[{viewName}] END {Environment.NewLine} GO"); } } }