使用EF6无法保存数据。 错误:OriginalValues不能用于处于已添加状态的实体

我对entity framework很陌生。 作为了解更多关于EF的入门者,我试图按照http://genericunitofworkandrepositories.codeplex.com/的示例制作EF6的通用实现。 当我开始创建项目时,我尝试使用相同的实体保存数据,同时尝试简单实现。 但是,现在我在尝试保存数据时出错了。 错误:

  • OriginalValues’(($ ReturnValue1))。OriginalValues’抛出类型’System.InvalidOperationException’的exceptionSystem.Data.Entity.Infrastructure.DbPropertyValues {System.InvalidOperationException}

消息是:OriginalValues不能用于处于已添加状态的实体。

堆栈跟踪:

at System.Data.Entity.Internal.InternalEntityEntry.ValidateStateToGetValues(String method, EntityState invalidState) at System.Data.Entity.Internal.InternalEntityEntry.get_OriginalValues() at System.Data.Entity.Infrastructure.DbEntityEntry`1.get_OriginalValues() 

我在github上有它。 任何人都可以帮我解决这个问题吗? 我从昨天开始被困在这里:)。 我在堆栈溢出时看到类似的post。 但是,他们遇到的问题就像传递空值,其中没有空值可以在db中接受。 在我的情况下,这不是问题。 请检查我的存储库并建议我能做什么..任何帮助表示赞赏。 这是lib链接: https : //github.com/tazbir/TryLib

编辑:

错误的地方在这里:

 public void SyncObjectState(TEntity entity) where TEntity : class, IObjectState { 

Entry(entity).State = StateHelper.ConvertState(entity.ObjectState);(执行此行后触发错误)

  } public class StateHelper { public static EntityState ConvertState(ObjectState state) { switch (state) { case ObjectState.Added: return EntityState.Added; case ObjectState.Modified: return EntityState.Modified; case ObjectState.Deleted: return EntityState.Deleted; default: return EntityState.Unchanged; } } } 

我通过从基类中删除重写的方法SaveChanges解决了这个问题。 虽然我将不得不调查为什么删除SaveChanges()方法解决了这个问题。

这是我从上下文类中删除的代码块,以使其工作。

 public override int SaveChanges() { SyncObjectsStatePreCommit(); var changes = base.SaveChanges(); SyncObjectsStatePostCommit(); return changes; } 

谢谢你们……你们可能无法理解这个场景。 如果有人想玩这个,你可以在github上查看我的存储库。

照顾自己