none
CRUD em Entity Framework 5.0 RRS feed

  • Pergunta

  • Bom Dia Amigos,

    Atualmente desenvolvo minhas aplicações utilizando esta estrutura:

    interface

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Linq.Expressions;

    namespace Zatara.DAO.Interfaces
    {
        public interface IBaseCRUD<T>
        {
            void Add(T pEntity);
            void Delete(T pEntity);
            void Attach(T pEntity);
            void Detach(T pEntity);
            void Update(T pEntity);
            IQueryable<T> Find(Expression<Func<T, bool>> where);
            IQueryable<T> GetAll();
            void SaveChanges();
        }
    }

    AbstractCRUD

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Linq.Expressions;
    using Zatara.DAO.Interfaces;

    namespace Zatara.DAO
    {
        public abstract class AbstractCRUD<T> : IBaseCRUD<T> where T : class
        {
            ZATARAEntities loja = new ZATARAEntities();

            #region IBaseCRUD<T> Members

            public void Add(T pEntity)
            {
                loja.AddObject(pEntity.GetType().Name, pEntity);
            }

            public void Delete(T pEntity)
            {
                loja.DeleteObject(pEntity);
            }

            public void Attach(T pEntity)
            {
                loja.AttachTo(pEntity.GetType().Name, pEntity);
            }

            public void Detach(T pEntity)
            {
                loja.Detach(pEntity);
            }

            public void Update(T pEntity)
            {
                loja.ApplyCurrentValues<T>(pEntity.GetType().Name, pEntity);
            }

            public IQueryable<T> Find(Expression<Func<T, bool>> where)
            {
                return loja.CreateObjectSet<T>().Where(where);
            }

            public IQueryable<T> GetAll()
            {
                return loja.CreateObjectSet<T>();
            }

            public void SaveChanges()
            {
                loja.SaveChanges();
            }

            #endregion
        }
    }

    Utilizo Visual Studio 2010 e Entity Framework 4.0

    Agora, tentei fazer um novo projeto em Visual Studio 2012 com entity framework 5.0 e ao montar minha interface e minha classe, não são encontrados os objetos AddObject, DeleteObject... etc

    Minha pergunta é, mudou a forma de estruturação no entity framework 5 ? Caso tenha mudado, como deve ser feito agora ?

    O que consegui fazer foi criar o projeto no visual studio 2010, criar a DAO, criar o entity pelo banco de dados e depois abrir no visual studio 2012.

    Obrigado a Todos,

    quinta-feira, 9 de maio de 2013 11:47

Todas as Respostas

  • sedo loja seu conexto você deve fazer

        public void Add(T pEntity)
            {
        loja.Set<T>().Add(pEntity);
            }

            public void Delete(T pEntity)
            {
              loja.Set<T>().Remove(pEntity);
            }

      public void SaveChanges()
            {
                loja.SaveChanges();
            }

         public IQueryable<T> Find(Expression<Func<T, bool>> where)
            {
                return loja.Set<T>().Where(where);
            }

       public IQueryable<T> GetAll()
            {
                return loja.Set<T>().AsIQuerble(); // algo como isso
            }

    quinta-feira, 9 de maio de 2013 21:59
  • Olá,

    A partir do EF 4.1 é utilizada uma nova API chamada DbContext, alguns métodos tem nomes diferentes e você vai ter que alterar os mesmos conforme o Gustavo postou.

    Para mais informações sobre DbContext clique aqui

    terça-feira, 14 de maio de 2013 11:43
  • Rafael blzz, 

    Algumas coisa mudaram do Entity Framework 4.0 para as versões superiores !!!!! da uma olhada nos Materiais do Fernando Ferreira, lá tem tudo e mais um pouco ;)

    segue o link : http://ferhenriquef.com/?s=dbContext


    Diego Almeida Barreto System Analyst / Software Developer

    terça-feira, 21 de maio de 2013 17:47
  •   OLa galera estou com o mesmo problema, utilizava o visual 2010 e dava tudo certo minhas assinaturas, agora estou utilizando o 2015 Ultimate, e nao sei como fazer as assinaturas, essas postadas aqui eu fiz porem ainda não testei, mas ainda nao sei como implementar 3 assinaturas podem ajudar por favor.

    Estou com dificuldades para implementar essas aqui galera:

            public IQueryable<T> GetAll()
            {
                return imobili.Set<T>.GetAll(p Entity); 
            }
    
            public void Update(T pEntity)
            {
                imobili.Entry<T>().Upadate(pEntity);
            }
    
            public void Attach(T pEntity)
            {
                imobili.Entry<T>().Attach(pEntity);
            }
    
            public void Detach(T pEntity)
            {
                throw new NotImplementedException();
            }

    quarta-feira, 17 de junho de 2015 00:01