using System; using System.Collections.Generic; using Microsoft.EntityFrameworkCore; using MySql.Data; using MySql.Data.EntityFrameworkCore.Extensions; using MySql.Data.MySqlClient; using Icarus.Models; namespace Icarus.Models.Context { public class SongContext : DbContext { public DbSet Songs { get; set; } public SongContext(DbContextOptions options) : base(options) { } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity() .ToTable("Song"); modelBuilder.Entity() .HasOne(s => s.Album) .WithMany(al => al.Songs) .HasForeignKey(s => s.AlbumId) .OnDelete(DeleteBehavior.SetNull); modelBuilder.Entity() .HasOne(sa => sa.SongArtist) .WithMany(ar => ar.Songs) .HasForeignKey(s => s.ArtistId) .OnDelete(DeleteBehavior.SetNull); modelBuilder.Entity() .HasOne(s => s.SongGenre) .WithMany(gnr => gnr.Songs) .HasForeignKey(s => s.GenreId) .OnDelete(DeleteBehavior.SetNull); modelBuilder.Entity() .HasOne(s => s.SongYear) .WithMany(yr => yr.Songs) .HasForeignKey(s => s.YearId) .OnDelete(DeleteBehavior.SetNull); modelBuilder.Entity() .Property(s => s.Year) .IsRequired(false); modelBuilder.Entity() .Property(s => s.YearId) .IsRequired(false); modelBuilder.Entity() .Property(s => s.GenreId) .IsRequired(false); modelBuilder.Entity() .Property(s => s.ArtistId) .IsRequired(false); modelBuilder.Entity() .Property(s => s.AlbumId) .IsRequired(false); } } }