5
respostas

Erro ao recompilar projeto e na execução

Olá!

Esse bug do projeto ScreenSound afetará o novo projeto(Criando um projeto de API)?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeInsira aqui a descrição dessa imagem para ajudar na acessibilidade

5 respostas

Olá Rubens! Tudo bem?

Analisado os prints que você enviou, tem alguns problemas de compatibilidade e acessibilidade no seu projeto ScreenSound, então vamos dar uma olhada em cada um deles:

  1. Erro CS0122: ArtistaDAL<Musica>.ArtistaDAL(ScreenSoundContext) é inacessível devido ao seu nível de proteção. Isso indica que o construtor ou a classe ArtistaDAL está com um nível de acesso que não permite ser acessado de onde está sendo chamado. Verifique se a classe ou o construtor estão definidos como public.

  2. Erro CS0305:"Usar o genérico tipo 'ArtistaDAL<T> requer 1 argumento de tipo". Certifique-se de que está passando o tipo correto ao instanciar ArtistaDAL. Por exemplo, new ArtistaDAL<Musica>(context).

  3. Avisos de compatibilidade (NU1701): O pacote Microsoft.Data.SqlClient não é totalmente compatível com o seu projeto que está usando .NET 7.0. Você pode tentar atualizar o pacote para uma versão compatível ou ajustar o framework do projeto para uma versão que suporte o pacote.

Esses problemas podem afetar a criação do novo projeto de API se ambos os projetos compartilharem dependências ou configurações. É importante resolver essas questões antes de prosseguir para garantir que a API funcione corretamente.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Olá! Logo após a resolução do problema de compatibilidade e acessibilidade , surge erro de exceção

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeErro de exceção ?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Oi, Rubens!

O erro System.InvalidOperationException com a mensagem sugerindo o uso de EnableRetryOnFailure está geralmente relacionado a falhas transientes ao acessar o banco de dados — como quedas momentâneas de conexão ou timeouts.

Para resolver isso, você pode habilitar a resiliência a falhas no seu contexto do Entity Framework adicionando o método EnableRetryOnFailure() na configuração do DbContext. Ajuste o seu código no Program.cs (ou Startup.cs, dependendo da versão do projeto) assim:


builder.Services.AddDbContext<ScreenSoundContext>(options =>
    options.UseSqlServer("sua_string_de_conexao",
        sqlOptions => sqlOptions.EnableRetryOnFailure()));

Isso fará com que o EF Core tente novamente automaticamente em caso de falhas temporárias, melhorando a estabilidade da aplicação.

Importante: Certifique-se de que sua string de conexão está correta e o servidor de banco de dados está acessível, pois esse recurso não corrige erros permanentes de configuração.

Fico à disposição.

Olá Armano! Inseri o código em Dbcontext apresentou erro! Como uso ?? Aonde inserir esse código?

Minha configuração em Dbcontext e Program.cs em sequencia

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeInsira aqui a descrição dessa imagem para ajudar na acessibilidade

Oi, Rubens!

Você deve inserir essa configuração no arquivo Program.cs, dentro da configuração dos serviços, e não diretamente na classe do DbContext. Veja como fazer isso corretamente:


builder.Services.AddDbContext<ScreenSoundContext>(options =>
    options.UseSqlServer("sua_string_de_conexao", 
        sqlOptions => sqlOptions.EnableRetryOnFailure())
);

Se você estiver usando uma classe separada para o DbContext, ela permanece assim:


public class ScreenSoundContext : DbContext
{
    public ScreenSoundContext(DbContextOptions<ScreenSoundContext> options) 
        : base(options) 
    { 
    }

    public DbSet<Artista> Artistas { get; set; }
    public DbSet<Musica> Musicas { get; set; }
}

Importante:

  • No DbContext, você não adiciona string de conexão nem opções como EnableRetryOnFailure().
  • Toda configuração de conexão e resiliência fica no Program.cs, na injeção de dependência.

Caso problemas tornem a acontecer, peço que compartilhe todo o seu projeto, usando o GitHub como meio, para assim eu realizar testes.

Fico à disposição.