Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Clauido José

Implementando um interface

Recommended Posts

Galera estou fazendo uma simples aplicação usando entyframewor bom peguei o exemplo do site do macorratti só que está dando erro na classe de repositorio ele pede para implementar um interneface vou postar o codiogo

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//--------------------
using System.Data.Entity;
using System.Data.Linq;

namespace EntiFrameWorkContesxt
{
    public class Repositorio<T> : IRepositorio<T> where T : class
    {
        protected LivrariaEntities Contexto;
        protected DbSet<T> _Dbset;

        public Repositorio(LivrariaEntities _dbContext)
        {
            if (_dbContext == null) throw new NullReferenceException("dbContext");
            Contexto = _dbContext;
            _Dbset = _dbContext.Set<T>();
        }

        public IQueryable GetTodos()
        {
            return _Dbset;
        }
    
        public T GetPorId(int id)
        {
            return (T) _Dbset.Find(id);
        }

        public void Adicionar(T entity)
        {
            _Dbset.Add(entity);
        }
        public void Atualizar(T entity)
        {
            var entry = Contexto.Entry(entity);
            _Dbset.Attach(entity);
            entry.State = EntityState.Modified;
        }
        public void Deletar(T entity)
        {
            var entry = Contexto.Entry(entity);
            _Dbset.Attach(entity);
            entry.State = EntityState.Deleted;
        }
        public void Deletar(int id)
        {
            var entity = GetPorId(id);
            if (entity == null) return;
            Deletar(entity);
        }
    }
}

A interface;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//--------------------
using System.Data.Linq;

namespace EntiFrameWorkContesxt
{
    interface IRepositorio<T> where T: class
    {
        IQueryable GetTodos();
        T GetPortID(int ID);
        void Adiconar(T enty);
        void Atualizar(T enty);
        void Deletar(T enty);
        void Deletar(int ID);
    }
}

Esta dando o seguinte erro:

Error 1 'EntiFrameWorkContesxt.Repositorio<T>' does not implement interface member 'EntiFrameWorkContesxt.IRepositorio<T>.Adiconar(T)' C:\certificacao_impacta\K19\EntiFrameWorkContesxt\EntiFrameWorkContesxt\Repositorio.cs 12 18 EntiFrameWorkContesxt

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu método na interface está escrito errado:

void Adiconar(T enty);

Adiconar;

Mas se você apertar Ctrl + . no nome da interface, quando estende sua classe, ele da a opção de implementar e cria todos os métodos.

Aqui:

public class Repositorio<T> : IRepositorio<T> where T : class

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara funcionou mas esta dando outro erro na hora de debugar

"Failed to set Database.DefaultConnectionFactory to an instance of the 'System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework Version=6.0.0.0' type as specified in the application configuration. See inner exception for details

Nessa linha:

//localizar a empresa de id igual 2 usando o metodo GetPortID()
Console.WriteLine("Localizando a editora com id igual a 2....");
var editoraPortId = editoraRepositorio.GetPortID(2);

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.