相关疑难解决方法(0)

使用具有实体框架6的存储库模式更新记录

我正在编写一个简单的博客应用程序,并尝试在我的通用存储库模式中建立CRUD操作,但我的更新方法出现错误,该错误说:

'System.Data.Entity.DbSet'不包含'Entry'的定义,并且没有扩展方法'Entry'可以找到接受类型'System.Data.Entity.DbSet'的第一个参数(你是否缺少using指令?或汇编参考?)

我跟着一篇文章解释了如何通过在DbContext上添加额外的间接级别来"伪造"Entry().但是在MVC 5中我们继承自:IdentityDbContext而不是DbContext.我确实试过实现作者修复,但错误仍然存​​在.

我的问题

如何使用IdentityDbContext将更新方法添加到Entity Framework 6中的存储库?如果我们不应该这样做,那么如何使用这种模式更新记录?

我应该注意到其他所有方法都按预期工作.

我的通用存储库:

public class BlogEngineRepository<T> : IRepository<T> where T : class
    {
        protected DbSet<T> DbSet;

        public BlogEngineRepository(DbContext dataContext)
        {
            DbSet = dataContext.Set<T>();
        }

        #region IRepository<T> Members

        public void Insert(T entity)
        {
            DbSet.Add(entity);
        }

        public void Delete(T entity)
        {
            DbSet.Remove(entity);
        }

        public void Update(T entity)
        { 

           DbSet.Entry(entity).State = System.Data.Entity.EntityState.Modified;

        }

        public IQueryable<T> SearchFor(Expression<Func<T, bool>> predicate)
        {
            return DbSet.Where(predicate);
        }

        public IQueryable<T> GetAll()
        {
            return DbSet;
        }

        public T GetById(int …
Run Code Online (Sandbox Code Playgroud)

c# repository-pattern entity-framework-6 asp.net-mvc-5 asp.net-identity

16
推荐指数
2
解决办法
4万
查看次数