ornwipa / book_recommender

Final project for ComIT's FULL STACK .NET course
GNU General Public License v3.0
1 stars 1 forks source link

Database migration & update #28

Closed ornwipa closed 4 years ago

ornwipa commented 4 years ago

Successful work done on Ubuntu 18.04

In Data/ApplicationDbContext.cs, create context to store entities in tables. The tables can contain only certain primitive variables (cannot be an object like User that last List of other object as attributes but can be Book and Rating that contains just numbers and characters).

    public class ApplicationDbContext : DbContext
    {
        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) {   }
        public DbSet<Book> Books { get; set; }
        public DbSet<Rating> Ratings { get; set; }
        protected override void OnModelCreating(ModelBuilder builder)
        {
            builder.Entity<Book>(eb =>
            {
                eb.HasNoKey();
                eb.ToTable("Books");
            });
            builder.Entity<Rating>(eb =>
            {
                eb.HasNoKey();
                eb.ToTable("Ratings");
            });
        }
    }

Results shown in Migrations/ApplicationDbContextModelSnapshot.cs include the columns of each table along with their data types.

    [DbContext(typeof(ApplicationDbContext))]
    partial class ApplicationDbContextModelSnapshot : ModelSnapshot
    {
        protected override void BuildModel(ModelBuilder modelBuilder)
        {
            modelBuilder
                .HasAnnotation("ProductVersion", "3.1.7");

            modelBuilder.Entity("recommender.Models.Book", b =>
                {
                    b.Property<string>("authors")
                        .HasColumnType("TEXT");

                    b.Property<double>("average_rating")
                        .HasColumnType("REAL");

                    b.Property<int>("book_id")
                        .HasColumnType("INTEGER");

                    b.Property<int>("id")
                        .HasColumnType("INTEGER");

                    b.Property<string>("image_url")
                        .HasColumnType("TEXT");

                    b.Property<int>("isbn")
                        .HasColumnType("INTEGER");

                    b.Property<string>("language_code")
                        .HasColumnType("TEXT");

                    b.Property<string>("original_title")
                        .HasColumnType("TEXT");

                    b.Property<int>("rating")
                        .HasColumnType("INTEGER");

                    b.Property<double>("ratings_count")
                        .HasColumnType("REAL");

                    b.Property<string>("title")
                        .HasColumnType("TEXT");

                    b.Property<double>("year")
                        .HasColumnType("REAL");

                    b.ToTable("Books");
                });

            modelBuilder.Entity("recommender.Models.Rating", b =>
                {
                    b.Property<int>("book_id")
                        .HasColumnType("INTEGER");

                    b.Property<int>("rating_")
                        .HasColumnType("INTEGER");

                    b.Property<int>("user_id")
                        .HasColumnType("INTEGER");

                    b.ToTable("Ratings");
                });
        }
    }