【问题标题】:Entity Framework - SaveChanges not reflected in database实体框架 - SaveChanges 未反映在数据库中
【发布时间】:2016-07-28 11:39:49
【问题描述】:

SaveChanges 没有反映在数据库中

我有以下代码

public async Task<int> Post([FromBody] UserEntry userEntry)
{
    UserEntry dbUserEntry;

    using (DBContext db = new DBContext())
    {
      // update
      dbUserEntry = this.db.UserEntries
                     .Where(u => u.UserEntryID == userEntry.UserEntryID)
                     .Include(u => u.EntryPlayers.Select(y => y.Player))
                     .FirstOrDefault();

      dbUserEntry.TeamName = userEntry.TeamName;
      dbUserEntry.EntryPlayers = userEntry.EntryPlayers;

      //db.Entry(dbUserEntry).State = EntityState.Modified;
      return db.SaveChanges();
    }

}

我在某处读到需要将状态设置为已修改,但如果我取消注释该行

//db.Entry(dbUserEntry).State = EntityState.Modified;

我得到错误:-

一个实体对象不能被多个 IEntityChangeTracker 实例引用。

关于如何让 SaveChanges 发挥作用的任何想法?

【问题讨论】:

  • this 中的dbUserEntry = this.db.UserEntries 是错字吗?因为如果不是,那就是你的问题。您可能在控制器中定义了另一个上下文。
  • 您是否启用了 AutoDetectChanges?
  • 感谢 SOfanatic。你说得对。从其他地方复制并粘贴错误。谢谢

标签: entity-framework


【解决方案1】:

使用 Find() 方法代替 FirstOrDefault()

dbUserEntry = this.db.UserEntries
                 .Include(u => u.EntryPlayers.Select(y => y.Player))
                 .Find(u => u.UserEntryID == userEntry.UserEntryID)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多