3
respostas

Erro na Propriedade Produtos caso altere a Classe LojaContext para Public class

Boa tarde, caso eu altere minha classe LojaContext para Public, ele dá a seguinte mensagem de erro:

Severity Code Description Project File Line Suppression State Error CS0053 Inconsistent accessibility: property type 'DbSet' is less accessible than property 'LojaContext.Produtos' Alura.Loja.Testes.ConsoleApp D:\Repositorio\Xamarin\Projects\EntityFrameWork\Alura.Loja\Alura.Loja.Testes.ConsoleApp\LojaContext.cs 8 Active

Caso eu deixe ela como Internal class LojaContext ele não dá mais o erro, compila e salva o produto normalmente.

Segue meus códigos:

using Microsoft.EntityFrameworkCore;
using System;

namespace Alura.Loja.Testes.ConsoleApp
{
    internal class LojaContext : DbContext
    {
        public DbSet<Produto> Produtos { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlServer("Server=(localdb)\\MSSQLLocalDB;Database=LojaDB;Trusted_Connection=true;");
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Alura.Loja.Testes.ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            //GravarUsandoAdoNet();
            GravarUsandoEntity();
        }

        private static void GravarUsandoEntity()
        {
            Produto p = new Produto();
            p.Nome = "Harry Potter e a Ordem da Fênix";
            p.Categoria = "Livros";
            p.Preco = 19.89;

            using (var contexto = new LojaContext())
            {
                contexto.Produtos.Add(p);
                contexto.SaveChanges();
            }
        }

        private static void GravarUsandoAdoNet()
        {
            Produto p = new Produto();
            p.Nome = "Harry Potter e a Ordem da Fênix";
            p.Categoria = "Livros";
            p.Preco = 19.89;

            using (var repo = new ProdutoDAO())
            {
                repo.Adicionar(p);
            }
        }
    }
}
3 respostas

Comigo aconteceu o mesmo caso. Deixei a class como internal

Ola o meu código esta igual, na linha 09 se mantenho a classe LojaContext como: " public DbSet Produtos { get; set; } "

Comigo também acontece o mesmo erro>

error CS0053: Acessibilidade inconsistente: tipo de propriedade "DbSet" é menos acessível do que a propriedade "LojaContext.Produtos"

Obs> Quando altero para : " internal DbSet Produtos { get; set; }"

o código compilou corretamente.. ok

Gente, boa tarde.

Essa dúvida foi tirada em uma questão anteriormente.

Como respondido pelo próprio instrutor Daniel Portugal, como a visibilidade da classe LojaContext está definida como pública, as visibilidades das classes de suas propriedades (Produto, nesse caso) também devem ser públicas.

Espero ter ajudado!