6

¿Cuál podría ser la mejor implementación para STE? Me enteré de que DbContext es la forma más sencilla de implementar un Repo con EF, personalmente aprovecho EntityState, pero allí ¿Hay algún miembro en ObjectContext que pueda ofrecer más funcionalidades para mis operaciones CRUD utilizando Repo? en la actualidad estoy usando un GenericRepository como éste:Diferencia entre la implementación de un repositorio usando ObjectContext vs DbContext en EF 4.1

public class GenericRepository<TEntity> where TEntity : class 
    { 
     internal DbContext context; 
     internal DbSet<TEntity> dbSet; 

     public GenericRepository(DbContext context) 
     { 
      this.context = context; 
      this.dbSet = context.Set<TEntity>(); 
     } 

     public virtual IEnumerable<TEntity> Get(
      Expression<Func<TEntity, bool>> filter = null, 
      Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null, 
      string includeProperties = "") 
     { 
      IQueryable<TEntity> query = dbSet; 

      if (filter != null) 
      { 
       query = query.Where(filter); 
      } 

      foreach (var includeProperty in includeProperties.Split 
       (new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)) 
      { 
       query = query.Include(includeProperty); 
      } 

      if (orderBy != null) 
      { 
       return orderBy(query).ToList(); 
      } 
      else 
      { 
       return query.ToList(); 
      } 
     } 

     public virtual TEntity GetByID(object id) 
     { 
      return dbSet.Find(id); 
     } 

     public virtual void Insert(TEntity entity) 
     { 
      dbSet.Add(entity); 
     } 

     public virtual void Delete(object id) 
     { 
      TEntity entityToDelete = dbSet.Find(id); 
      Delete(entityToDelete); 
     } 

     public virtual void Delete(TEntity entityToDelete) 
     { 
      if (context.Entry(entityToDelete).State == EntityState.Detached) 
      { 
       dbSet.Attach(entityToDelete); 
      } 
      dbSet.Remove(entityToDelete); 
     } 

     public virtual void Update(TEntity entityToUpdate) 
     { 
      dbSet.Attach(entityToUpdate); 
      context.Entry(entityToUpdate).State = EntityState.Modified; 
     } 

     public virtual IEnumerable<TEntity> GetWithRawSql(string query, params object[] parameters) 
     { 
      return dbSet.SqlQuery(query, parameters).ToList(); 
     } 
    } 

me olvidó mencionar que también estoy usando la unidad, por lo que las llamadas a Repositorio son como esta manera: seguimiento

[Dependency] 
     public IUnityContainer Container { get; set; } 

     public List<Case> GetAll() 
     { 
      using (var context = Container.Resolve<ClaimEntities>()) 
      { 
       var qry = (from c in context.Cases 
          select c).ToList(); 
       return qry; 
      } 
     } 

Respuesta

4

Auto las entidades son características de ObjectContext: son not supported in DbContext. Si desea STEs, debe cambiar a ObjectContext API y usar la plantilla STEs T4 para generar entidades en lugar de sus POCO actuales.

Cuestiones relacionadas