public class CineAluraContext : DbContext
{
public DbSet<Ator> Atores { get; set; }
public DbSet<Filme> Filmes { get; set; }
public DbSet<FilmeAtor> Elenco { get; set; }
public DbSet<Categoria> Categorias { get; set; }
public DbSet<FilmeCategoria> FilmeCategorias { get; set; }
public CineAluraContext()
{
}
public CineAluraContext(DbContextOptions<CineAluraContext> options) : base(options)
{
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
base.OnConfiguring(optionsBuilder);
optionsBuilder.UseSqlServer(@"Data Source=(LocalDB)\MSSQLLocalDB;Initial Catalog=AluraFilmes;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.ApplyConfiguration(new AtorConfiguration());
modelBuilder.ApplyConfiguration(new FilmeConfiguration());
modelBuilder.ApplyConfiguration(new FilmeAtorConfiguration());
modelBuilder.ApplyConfiguration(new CategoriaConfiguration());
modelBuilder.ApplyConfiguration(new FilmeCategoriaConfiguration());
}
}
public class FilmeCategoriaConfiguration : IEntityTypeConfiguration<FilmeCategoria>
{
public void Configure(EntityTypeBuilder<FilmeCategoria> builder)
{
builder.ToTable("film_category");
builder.Property<int>("film_id");
builder.Property<byte>("category_id");
builder.HasKey("film_id", "category_id");
builder.Property<DateTime>("last_update").HasColumnType("datime").HasDefaultValueSql("getdate()");
builder.HasOne(fc => fc.Filme).WithMany(f => f.Categorias).HasForeignKey("film_id");
builder.HasOne(fc => fc.Categoria).WithMany(c => c.Filmes).HasForeignKey("category_id");
}
}
public class CategoriaConfiguration : IEntityTypeConfiguration<Categoria>
{
public void Configure(EntityTypeBuilder<Categoria> builder)
{
builder.ToTable("category");
builder.Property(c => c.Id).HasColumnName("category_id");
builder.Property(c => c.Nome).HasColumnName("name").HasColumnType("varchar(25)").IsRequired();
builder.Property<DateTime>("last_update").HasColumnType("datetime").HasDefaultValueSql("getdate()");
}
}
public class Categoria
{
public Categoria()
{
Filmes = new List<FilmeCategoria>();
}
public byte Id { get; set; }
public string Nome { get; set; }
public IList<FilmeCategoria> Filmes { get; set; }
public override string ToString()
{
return $"{Nome}";
}
}
public class Filme
{
public Filme()
{
Elenco = new List<FilmeAtor>();
Categorias = new List<FilmeCategoria>();
}
public int Id { get; set; }
public string Titulo { get; set; }
public string Descricao { get; set; }
public string AnoLancamento { get; set; }
public short Duracao { get; set; }
public IList<FilmeAtor> Elenco { get; set; }
public IList<FilmeCategoria> Categorias { get; set; }
public override string ToString()
{
return $"{Titulo} - {AnoLancamento}\n";
}
}
public class FilmeCategoria
{
public Filme Filme { get; set; }
public Categoria Categoria { get; set; }
}