zoukankan      html  css  js  c++  java
  • EF How to use context.Set and context.Entry, which ships with EF4.1 ?

    How to use context.Set and context.Entry, which ships with EF4.1 ?

    Hello,
    
    I am trying to implement a generic repository as explained on the following link :-
    http://www.asp.net/entity-framework/tutorials/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application
    
    However, I do not have options for context.Set or context.Entry, which Ships with EF 4.1 - is there some other way of doing it ? Please see problem code in bold below:-
    using System;
    
    using System.Collections.Generic;
    
    using System.Linq;
    
    using System.Web;
    
    using System.Data; // for EntityState
    
    using System.Data.Entity;
    
    using System.Linq.Expressions;  // for Expression command
    
    using TasPOMark4.Models;
    
    
    
    namespace TasPOMark4.Models
    
    {
    
        public class GenericRepository<TEntity> where TEntity : class 
    
        { 
    
            internal TasEntities context; 
    
            internal DbSet<TEntity> dbSet; 
    
     
    
            public GenericRepository(TasEntities context) 
    
            { 
    
                this.context = context; 
    
                this.dbSet = context.Set<TEntity>();
    
            } 
    
     
    
            public 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) 
    
            { 
    
                *//below Context.Entry does not exist*
    
                *//if (context.Entry(entityToDelete).State == EntityState.Detached)*
    
     
    
                *//if(context.ObjectStateManager.GetObjectStateEntry(entityToDelete) == EntityState.Detached)*
    
                *//{*                 dbSet.Attach(entityToDelete); 
    
                //} 
    
                dbSet.Remove(entityToDelete); 
    
            } 
    
     
    
            public virtual void Update(TEntity entityToUpdate) 
    
            { 
    
                dbSet.Attach(entityToUpdate); 
    
                
    
                *//context.Entry does not exist*
    
                *//context.Entry(entityToUpdate).State = EntityState.Modified;* 
    
                // GR skinning a cat (06/05/2011)
    
                context.ObjectStateManager.ChangeObjectState(entityToUpdate, EntityState.Modified);        } 
    
        } 
    
    }
    As you can see directly above, I have attempted to use context.ObjectStateManager.ChangeObjectState - is this correct ? 
    
    Many thanks in advance for any help someone can provide,
    
    Graeme
    
    Edited by: user4487499 on 06-May-2011 02:45
    
    Edited by: user4487499 on 06-May-2011 02:46
    
    Edited by: user4487499 on 06-May-2011 03:21
  • 相关阅读:
    少壮不努力,老大徒伤悲
    吾日三省吾身
    记录生活
    为人处世
    时间不等人
    博客两年记忆
    抬起头吧
    下一步计划
    寻找遗失的平静
    暑假第二十六测
  • 原文地址:https://www.cnblogs.com/shiningrise/p/5615626.html
Copyright © 2011-2022 走看看