erro CS0311 Não há conversão de referência implícita

Aparece o seguinte erro , já tentei procurar no google mas não achei , se alguém puder ajudar segue o código…

using Dominio.Repositorio;

using Microsoft.EntityFrameworkCore;

using Repositorio.Contexto;

using Repositorio.Interfaces;

using SistemaVenda.Dominio.Entidades;

using System;

using System.Collections.Generic;

using System.Text;

namespace Repositorio.Entidades

{

public class RepositorioCategoria : Repositorio, IRepositorioCategoria

{

public RepositorioCategoria(ApplicationDbContext dbContext) : base(dbContext) { }

}


}

//o erro aparece no RepositorioCategoria em pontinhos

codigo da classe EntityBase

using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Text;

namespace SistemaVenda.Dominio.Entidades { public class EntityBase
{

[Key]
public int? Codigo { get; set; }

}


}

namespace Dominio { public class EntityBase { public int Codigo; } }

Codigo da classe Categoria

using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Threading.Tasks;

namespace SistemaVenda.Dominio.Entidades { public class Categoria : EntityBase {

public string Descricao { get; set; }

public ICollection<Produto> Produtos { get; set; }

}


}

Gravidade Código Descrição Projeto Arquivo Linha Estado de Supressão

Erro CS0311 O tipo “SistemaVenda.Dominio.Entidades.Categoria” não pode ser usado como parâmetro de tipo “TEntidade” no tipo ou método genérico “Repositorio”. Não há conversão de referência implícita de “SistemaVenda.Dominio.Entidades.Categoria” em “Dominio.EntityBase”.

Boa noite, algumas partes do codigo ficaram no padrão certo e outras não, ficou um pouco dificil de entende-lo…

Mas, você pode postar sua classe Repositorio (essa que RepositorioCategoria herda) ?

Oi obrigada, pois é…achei que o erro de repente vem da classe EntityBase que a classe Categoria está tendo dificuldade de puxar…mas esqueci de postar o código …aí segue

using Dominio;
using Dominio.Interfaces;
using Microsoft.EntityFrameworkCore;
using Repositorio.Interfaces;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;



namespace Repositorio
{
    public abstract class Repositorio<TEntidade> : DbContext, IRepositorio<TEntidade> //
        where TEntidade : EntityBase, new()

    {
       DbContext Db;
       public  DbSet<TEntidade> DbSetContext;//protected

        public Repositorio(DbContext dbcontext)
        {
            Db = dbcontext;
            DbSetContext = Db.Set<TEntidade>();


        }


        public void Create(TEntidade Entity)
        {
         if(Entity.Codigo==null)
            { DbSetContext.Add(Entity);                 }

            else
            {Db.Entry(Entity).State = EntityState.Modified; }

            SaveChanges();

        }

        public virtual void Delete(int id)
        {
            var ent = new TEntidade() { Codigo = id };
            DbSetContext.Attach(ent);
            DbSetContext.Remove(ent);
            Db.SaveChanges();
            
        }

        public TEntidade Read(int id)
        {
            return DbSetContext.Where(x => x.Codigo == id).FirstOrDefault();
        }

        public virtual IEnumerable<TEntidade> Read()
        {
            return DbSetContext.AsNoTracking().ToList();
      
        
 
      }
    }

    //
}
public abstract class Repositorio : DbContext, IRepositorio //
where TEntidade : EntityBase

Seu problema está aqui.
1º ponto: você não deve herdar o DbContext e sim receber uma instancia dele.
2º ponto: você não disse que seu repositório é uma classe genérica.

Ajustando isso, ficaria assim:

 public abstract class Repositorio<TEntidade> : IRepositorio<TEntidade> where TEntidade : EntityBase

obrigada pela dica, tentei aqui…não deu certo de primeira…acho que de repente eu teria que alterar o codigo abaixo

{
   DbContext Db;
   public  DbSet<TEntidade> DbSetContext;//protected

    public Repositorio(DbContext dbcontext)
    {
        Db = dbcontext;
        DbSetContext = Db.Set<TEntidade>();


    }


    public void Create(TEntidade Entity)
    {
     if(Entity.Codigo==null)
        { DbSetContext.Add(Entity);                 }

        else
        {Db.Entry(Entity).State = EntityState.Modified; }

        SaveChanges();

    }

estou começando nesse tipo de linguagem…acho que pode ser isso

Aparentemente está certo. Consegue mandar um print da lista de erros do VisualStudio?

oi…é uma lista de muitos erros…eu acho que todos estão sendo puxados por esse erro…mandando um print dos erros que colar aqui não vai :grimacing:

Me parece que você tem vários namespaces diferentes que contém a mesma classe.

Nas suas entidades, você está referenciando a classe EntityBase do namespace SistemaVenda.Dominio.Entidades e nos repositorios você procura por uma classe EntityBase que está no namespace Dominio.
Embora aparentemente elas tenham a mesma implementação, ainda são diferentes. Padronize isso, ou use de um lugar ou use de outro.

Alguns desses erros, são erros de sintaxe. Você terá de analisar o código e ver se consegue descobrir o que errou.

Valeu…foi tentar opções aqui …:slightly_smiling_face: