码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-06-25 00:52:00      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:

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

 

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

标签:

原文地址:http://www.cnblogs.com/shiningrise/p/5615626.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!