gpt4 book ai didi

c# - 使用 EF6 保存数据失败。错误 : OriginalValues cannot be used for entities in the Added state

转载 作者:行者123 更新时间:2023-11-30 18:24:23 27 4
gpt4 key购买 nike

我对 Entity Framework 还很陌生。作为了解更多关于 EF 的入门者,我正在尝试按照 http://genericunitofworkandrepositories.codeplex.com/ 的示例对 EF6 进行通用实现。 .当我开始创建项目时,我能够使用相同的实体保存数据,同时尝试简单明了的实现。但是,现在我在尝试保存数据时遇到了错误。错误:

  • OriginalValues '(($ReturnValue1)).OriginalValues' threw an exception of type 'System.InvalidOperationException' System.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 上有它。谁能帮我解决这个问题?我从昨天就被困在这里了:)。我在堆栈溢出上看到了类似的帖子。但是,他们遇到了像传递空值这样的问题,因为在数据库中没有空值可以被接受。就我而言,这不是问题。请检查我的存储库并建议我可以做什么。感谢任何帮助。这是库链接:https://github.com/tazbir/TryLib

编辑:

错误的地方在这里:

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

Entry(entity).State = StateHelper.ConvertState(entity.ObjectState);(error triggers after executing this line)

        }



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 上查看我的存储库。

保重

关于c# - 使用 EF6 保存数据失败。错误 : OriginalValues cannot be used for entities in the Added state,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31333916/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com