1
resposta

Não entendi

Pq sessão não tem chave própria? pois da maneira que foi feita diz que não pode ter mais de uma sessão com o mesmo filme e mesmo shopping mas isso não é oq acontece no mundo real. temos várias sessões do mesmo filme no mesmo shopping.

1 resposta

Olá Victor.

Tudo bem?

Acho que entendi sua dúvida sobre a configuração das chaves na tabela de Sessão. No mundo real, é comum ter várias sessões do mesmo filme no mesmo cinema, muitas vezes até no mesmo dia, mas em horários diferentes.

No caso do modelo que você está estudando, a chave composta por FilmeId e CinemaId impede a duplicidade de sessões para o mesmo filme no mesmo cinema, o que não reflete a realidade operacional de um cinema. Isso acontece porque essa chave composta está agindo como uma restrição que não permite mais de uma sessão para a mesma combinação de filme e cinema, independentemente de outros fatores como horário ou data.

Uma maneira de resolver isso seria introduzir outro campo na tabela Sessão, como Horario, e incluir esse campo na chave primária. Isso permitiria múltiplas sessões do mesmo filme no mesmo cinema, desde que em horários diferentes. Aqui está um exemplo de como você poderia ajustar o modelo:

public class Sessao
{
    public int FilmeId { get; set; }
    public virtual Filme Filme { get; set; }
    public int CinemaId { get; set; }
    public virtual Cinema Cinema { get; set; }
    public DateTime Horario { get; set; }

    [Key]
    public int SessaoId { get; set; }
}

E no ModelBuilder você configuraria assim:

protected override void OnModelCreating(ModelBuilder builder)
{
    builder.Entity<Sessao>()
        .HasKey(sessao => new { sessao.FilmeId, sessao.CinemaId, sessao.Horario });
}

Essa mudança permitiria que o mesmo filme fosse exibido no mesmo cinema em horários diferentes, refletindo melhor a operação de um cinema real.

Espero ter entendido e conseguido ajudar. Qualquer dúvida manda aqui. Bons estudos.