From 373608299be14e759ff2f309308d3a6f424fbd48 Mon Sep 17 00:00:00 2001 From: Kira Date: Tue, 5 Sep 2023 12:55:29 -0700 Subject: [PATCH] Configured to work with SQL --- .../Blazor_DotNet8_MovieApp.csproj | 8 ++ .../Data/MovieReviewDbContext.cs | 19 ++- Blazor_DotNet8_MovieApp/Data/SeedData.cs | 113 +++++++++++++++ .../20230905194403_InitialCreate.Designer.cs | 132 ++++++++++++++++++ .../20230905194403_InitialCreate.cs | 55 ++++++++ .../MovieReviewDbContextModelSnapshot.cs | 129 +++++++++++++++++ Blazor_DotNet8_MovieApp/Pages/Index.razor | 2 +- .../Pages/MovieReview.razor | 2 +- Blazor_DotNet8_MovieApp/Program.cs | 6 + .../Services/IMovieReviewService.cs | 4 +- .../Services/MovieReviewService.cs | 86 ++---------- Blazor_DotNet8_MovieApp/appsettings.json | 3 + 12 files changed, 480 insertions(+), 79 deletions(-) create mode 100644 Blazor_DotNet8_MovieApp/Data/SeedData.cs create mode 100644 Blazor_DotNet8_MovieApp/Migrations/20230905194403_InitialCreate.Designer.cs create mode 100644 Blazor_DotNet8_MovieApp/Migrations/20230905194403_InitialCreate.cs create mode 100644 Blazor_DotNet8_MovieApp/Migrations/MovieReviewDbContextModelSnapshot.cs diff --git a/Blazor_DotNet8_MovieApp/Blazor_DotNet8_MovieApp.csproj b/Blazor_DotNet8_MovieApp/Blazor_DotNet8_MovieApp.csproj index 5a37b4e..f6e5ed8 100644 --- a/Blazor_DotNet8_MovieApp/Blazor_DotNet8_MovieApp.csproj +++ b/Blazor_DotNet8_MovieApp/Blazor_DotNet8_MovieApp.csproj @@ -10,4 +10,12 @@ + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + diff --git a/Blazor_DotNet8_MovieApp/Data/MovieReviewDbContext.cs b/Blazor_DotNet8_MovieApp/Data/MovieReviewDbContext.cs index d45faed..3fad197 100644 --- a/Blazor_DotNet8_MovieApp/Data/MovieReviewDbContext.cs +++ b/Blazor_DotNet8_MovieApp/Data/MovieReviewDbContext.cs @@ -1,7 +1,22 @@ -namespace Blazor_DotNet8_MovieApp.Data +using Microsoft.EntityFrameworkCore; +using Blazor_DotNet8_MovieApp.Models; + +namespace Blazor_DotNet8_MovieApp.Data { - public class MovieReviewDbContext + public class MovieReviewDbContext:DbContext { + public MovieReviewDbContext(DbContextOptions options):base(options) + { + + } + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + base.OnModelCreating(modelBuilder); + + SeedData.AddMovies(modelBuilder); + } + + public DbSet Movies { get; set; } } } diff --git a/Blazor_DotNet8_MovieApp/Data/SeedData.cs b/Blazor_DotNet8_MovieApp/Data/SeedData.cs new file mode 100644 index 0000000..360d9cb --- /dev/null +++ b/Blazor_DotNet8_MovieApp/Data/SeedData.cs @@ -0,0 +1,113 @@ +using Blazor_DotNet8_MovieApp.Models; +using Microsoft.EntityFrameworkCore; + +namespace Blazor_DotNet8_MovieApp.Data +{ + public static class SeedData + { + public static void AddMovies(ModelBuilder modelBuilder) + { + modelBuilder.Entity().HasData( + new MovieModel + { + Id = 1, + Title = "Highlander", + Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", + ImageUrl = "/images/movies/Highlander.png", + Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia" + } + ); + + modelBuilder.Entity().HasData( + new MovieModel + { + Id = 2, + Title = "Godfather", + Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", + ImageUrl = "/images/movies/Godfather.png", + Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia" + } + ); + + + modelBuilder.Entity().HasData( + new MovieModel + { + Id = 3, + Title = "Last of the Mohicans", + Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", + ImageUrl = "/images/movies/LastOfTheMohicans.png", + Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia" + } + ); + + modelBuilder.Entity().HasData( + new MovieModel + { + Id = 4, + Title = "Rear Window", + Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", + ImageUrl = "/images/movies/RearWindow.png", + Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia" + } + ); + + modelBuilder.Entity().HasData( + new MovieModel + { + Id = 5, + Title = "Road House", + Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", + ImageUrl = "/images/movies/RoadHouse.png", + Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia" + } + ); + + modelBuilder.Entity().HasData( + new MovieModel + { + Id = 6, + Title = "Star Treck IV", + Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", + ImageUrl = "/images/movies/StarTreck4.png", + Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia" + } + ); + + modelBuilder.Entity().HasData( + new MovieModel + { + Id = 7, + Title = "Mean Girls", + Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", + ImageUrl = "/images/movies/MeanGirls.png", + Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia" + } + ); + + modelBuilder.Entity().HasData( + new MovieModel + { + Id = 8, + Title = "Oppenheimer", + Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", + ImageUrl = "/images/movies/Oppenheimer.png", + Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia" + } + ); + + modelBuilder.Entity().HasData( + new MovieModel + { + Id = 9, + Title = "Barbie", + Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", + ImageUrl = "/images/movies/Barbie.png", + Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia" + } + ); + + + } + } +} diff --git a/Blazor_DotNet8_MovieApp/Migrations/20230905194403_InitialCreate.Designer.cs b/Blazor_DotNet8_MovieApp/Migrations/20230905194403_InitialCreate.Designer.cs new file mode 100644 index 0000000..a70d828 --- /dev/null +++ b/Blazor_DotNet8_MovieApp/Migrations/20230905194403_InitialCreate.Designer.cs @@ -0,0 +1,132 @@ +// +using Blazor_DotNet8_MovieApp.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Blazor_DotNet8_MovieApp.Migrations +{ + [DbContext(typeof(MovieReviewDbContext))] + [Migration("20230905194403_InitialCreate")] + partial class InitialCreate + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.10") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Blazor_DotNet8_MovieApp.Models.MovieModel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Description") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ImageUrl") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Review") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Title") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Movies"); + + b.HasData( + new + { + Id = 1, + Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", + ImageUrl = "/images/movies/Highlander.png", + Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia", + Title = "Highlander" + }, + new + { + Id = 2, + Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", + ImageUrl = "/images/movies/Godfather.png", + Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia", + Title = "Godfather" + }, + new + { + Id = 3, + Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", + ImageUrl = "/images/movies/LastOfTheMohicans.png", + Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia", + Title = "Last of the Mohicans" + }, + new + { + Id = 4, + Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", + ImageUrl = "/images/movies/RearWindow.png", + Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia", + Title = "Rear Window" + }, + new + { + Id = 5, + Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", + ImageUrl = "/images/movies/RoadHouse.png", + Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia", + Title = "Road House" + }, + new + { + Id = 6, + Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", + ImageUrl = "/images/movies/StarTreck4.png", + Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia", + Title = "Star Treck IV" + }, + new + { + Id = 7, + Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", + ImageUrl = "/images/movies/MeanGirls.png", + Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia", + Title = "Mean Girls" + }, + new + { + Id = 8, + Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", + ImageUrl = "/images/movies/Oppenheimer.png", + Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia", + Title = "Oppenheimer" + }, + new + { + Id = 9, + Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", + ImageUrl = "/images/movies/Barbie.png", + Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia", + Title = "Barbie" + }); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Blazor_DotNet8_MovieApp/Migrations/20230905194403_InitialCreate.cs b/Blazor_DotNet8_MovieApp/Migrations/20230905194403_InitialCreate.cs new file mode 100644 index 0000000..340a49e --- /dev/null +++ b/Blazor_DotNet8_MovieApp/Migrations/20230905194403_InitialCreate.cs @@ -0,0 +1,55 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +#pragma warning disable CA1814 // Prefer jagged arrays over multidimensional + +namespace Blazor_DotNet8_MovieApp.Migrations +{ + /// + public partial class InitialCreate : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "Movies", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Title = table.Column(type: "nvarchar(max)", nullable: false), + Description = table.Column(type: "nvarchar(max)", nullable: false), + ImageUrl = table.Column(type: "nvarchar(max)", nullable: false), + Review = table.Column(type: "nvarchar(max)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Movies", x => x.Id); + }); + + migrationBuilder.InsertData( + table: "Movies", + columns: new[] { "Id", "Description", "ImageUrl", "Review", "Title" }, + values: new object[,] + { + { 1, "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", "/images/movies/Highlander.png", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia", "Highlander" }, + { 2, "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", "/images/movies/Godfather.png", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia", "Godfather" }, + { 3, "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", "/images/movies/LastOfTheMohicans.png", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia", "Last of the Mohicans" }, + { 4, "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", "/images/movies/RearWindow.png", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia", "Rear Window" }, + { 5, "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", "/images/movies/RoadHouse.png", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia", "Road House" }, + { 6, "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", "/images/movies/StarTreck4.png", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia", "Star Treck IV" }, + { 7, "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", "/images/movies/MeanGirls.png", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia", "Mean Girls" }, + { 8, "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", "/images/movies/Oppenheimer.png", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia", "Oppenheimer" }, + { 9, "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", "/images/movies/Barbie.png", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia", "Barbie" } + }); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "Movies"); + } + } +} diff --git a/Blazor_DotNet8_MovieApp/Migrations/MovieReviewDbContextModelSnapshot.cs b/Blazor_DotNet8_MovieApp/Migrations/MovieReviewDbContextModelSnapshot.cs new file mode 100644 index 0000000..84c9e3a --- /dev/null +++ b/Blazor_DotNet8_MovieApp/Migrations/MovieReviewDbContextModelSnapshot.cs @@ -0,0 +1,129 @@ +// +using Blazor_DotNet8_MovieApp.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Blazor_DotNet8_MovieApp.Migrations +{ + [DbContext(typeof(MovieReviewDbContext))] + partial class MovieReviewDbContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.10") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Blazor_DotNet8_MovieApp.Models.MovieModel", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Description") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ImageUrl") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Review") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Title") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Movies"); + + b.HasData( + new + { + Id = 1, + Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", + ImageUrl = "/images/movies/Highlander.png", + Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia", + Title = "Highlander" + }, + new + { + Id = 2, + Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", + ImageUrl = "/images/movies/Godfather.png", + Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia", + Title = "Godfather" + }, + new + { + Id = 3, + Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", + ImageUrl = "/images/movies/LastOfTheMohicans.png", + Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia", + Title = "Last of the Mohicans" + }, + new + { + Id = 4, + Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", + ImageUrl = "/images/movies/RearWindow.png", + Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia", + Title = "Rear Window" + }, + new + { + Id = 5, + Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", + ImageUrl = "/images/movies/RoadHouse.png", + Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia", + Title = "Road House" + }, + new + { + Id = 6, + Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", + ImageUrl = "/images/movies/StarTreck4.png", + Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia", + Title = "Star Treck IV" + }, + new + { + Id = 7, + Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", + ImageUrl = "/images/movies/MeanGirls.png", + Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia", + Title = "Mean Girls" + }, + new + { + Id = 8, + Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", + ImageUrl = "/images/movies/Oppenheimer.png", + Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia", + Title = "Oppenheimer" + }, + new + { + Id = 9, + Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", + ImageUrl = "/images/movies/Barbie.png", + Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia", + Title = "Barbie" + }); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Blazor_DotNet8_MovieApp/Pages/Index.razor b/Blazor_DotNet8_MovieApp/Pages/Index.razor index f0e960e..77f72f4 100644 --- a/Blazor_DotNet8_MovieApp/Pages/Index.razor +++ b/Blazor_DotNet8_MovieApp/Pages/Index.razor @@ -35,6 +35,6 @@ else protected override async Task OnInitializedAsync() { await Task.Delay(2000); - Movies = MovieReviewService?.GetMovies(); + Movies = await MovieReviewService.GetMovies(); } } \ No newline at end of file diff --git a/Blazor_DotNet8_MovieApp/Pages/MovieReview.razor b/Blazor_DotNet8_MovieApp/Pages/MovieReview.razor index f2ce3cd..4e0f76a 100644 --- a/Blazor_DotNet8_MovieApp/Pages/MovieReview.razor +++ b/Blazor_DotNet8_MovieApp/Pages/MovieReview.razor @@ -34,7 +34,7 @@ else if (Id != null) { int? id = int.Parse(Id); - MovieItem = MovieReviewService?.GetMovieById(id.Value); + MovieItem = await MovieReviewService.GetMovieById(id.Value); } } diff --git a/Blazor_DotNet8_MovieApp/Program.cs b/Blazor_DotNet8_MovieApp/Program.cs index a7905e3..2f60aac 100644 --- a/Blazor_DotNet8_MovieApp/Program.cs +++ b/Blazor_DotNet8_MovieApp/Program.cs @@ -1,11 +1,17 @@ using Blazor_DotNet8_MovieApp; +using Blazor_DotNet8_MovieApp.Data; using Blazor_DotNet8_MovieApp.Services; +using Microsoft.EntityFrameworkCore; var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddRazorComponents().AddServerComponents(); +builder.Services.AddDbContextPool(options => + options.UseSqlServer(builder.Configuration.GetConnectionString("MovieReviewDbConnection")) +); + builder.Services.AddScoped(); var app = builder.Build(); diff --git a/Blazor_DotNet8_MovieApp/Services/IMovieReviewService.cs b/Blazor_DotNet8_MovieApp/Services/IMovieReviewService.cs index caa0554..80d5208 100644 --- a/Blazor_DotNet8_MovieApp/Services/IMovieReviewService.cs +++ b/Blazor_DotNet8_MovieApp/Services/IMovieReviewService.cs @@ -4,7 +4,7 @@ namespace Blazor_DotNet8_MovieApp.Services { public interface IMovieReviewService { - List? GetMovies(); - MovieModel? GetMovieById(int id); + Task?> GetMovies(); + Task GetMovieById(int id); } } diff --git a/Blazor_DotNet8_MovieApp/Services/MovieReviewService.cs b/Blazor_DotNet8_MovieApp/Services/MovieReviewService.cs index 8feeb4a..d053989 100644 --- a/Blazor_DotNet8_MovieApp/Services/MovieReviewService.cs +++ b/Blazor_DotNet8_MovieApp/Services/MovieReviewService.cs @@ -1,86 +1,26 @@ -using Blazor_DotNet8_MovieApp.Models; +using Blazor_DotNet8_MovieApp.Data; +using Blazor_DotNet8_MovieApp.Models; +using Microsoft.EntityFrameworkCore; namespace Blazor_DotNet8_MovieApp.Services { public class MovieReviewService : IMovieReviewService { + private readonly MovieReviewDbContext movieReviewDbContext; - private static readonly List Movies = new List + public MovieReviewService(MovieReviewDbContext movieReviewDbContext) { - new MovieModel { - Id = 1, - Title = "Highlander", - Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", - ImageUrl = "/images/movies/Highlander.png", - Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia" - }, - new MovieModel{ - Id=2, - Title = "Godfather", - Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", - ImageUrl = "/images/movies/Godfather.png", - Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia" - }, - new MovieModel{ - Id=3, - Title = "Last of the Mohicans", - Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", - ImageUrl = "/images/movies/LastOfTheMohicans.png", - Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia" - }, - new MovieModel{ - Id=4, - Title = "Rear Window", - Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", - ImageUrl = "/images/movies/RearWindow.png", - Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia" - }, - new MovieModel{ - Id=5, - Title = "Road House", - Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", - ImageUrl = "/images/movies/RoadHouse.png", - Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia" - }, - new MovieModel{ - Id=6, - Title = "Star Treck IV", - Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", - ImageUrl = "/images/movies/StarTreck4.png", - Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia" - }, - new MovieModel{ - Id=7, - Title = "Mean Girls", - Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", - ImageUrl = "/images/movies/MeanGirls.png", - Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia" - }, - new MovieModel{ - Id=8, - Title = "Oppenheimer", - Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", - ImageUrl = "/images/movies/Oppenheimer.png", - Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia" - }, - new MovieModel{ - Id=9, - Title = "Barbie", - Description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. ", - ImageUrl = "/images/movies/Barbie.png", - Review = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vitae nunc risus. Cras sed ex augue. Etiam rutrum massa at enim sollicitudin scelerisque. Pellentesque dignissim, velit vitae lacinia" - } - }; - - - public MovieModel? GetMovieById(int id) - { - return Movies.SingleOrDefault(m => m.Id == id); + this.movieReviewDbContext = movieReviewDbContext; } - public List? GetMovies() + public async Task GetMovieById(int id) { - return Movies; + return await movieReviewDbContext.Movies.SingleOrDefaultAsync(m => m.Id == id); + } + + public async Task?> GetMovies() + { + return await movieReviewDbContext.Movies.ToListAsync(); } } } diff --git a/Blazor_DotNet8_MovieApp/appsettings.json b/Blazor_DotNet8_MovieApp/appsettings.json index 10f68b8..3793a4d 100644 --- a/Blazor_DotNet8_MovieApp/appsettings.json +++ b/Blazor_DotNet8_MovieApp/appsettings.json @@ -1,4 +1,7 @@ { + "ConnectionStrings": { + "MovieReviewDbConnection": "Server=GRILLED-CHEESE;Database=MovieReviewDB;Trusted_Connection=true;TrustServerCertificate=True" + }, "Logging": { "LogLevel": { "Default": "Information",