我正在使用 EF4 开发应用程序并创建了一个通用方法,但生成了此错误。
方法:
public Boolean change (T)
{
ctx.ApplyCurrentValues <T> (t.GetType (). Name, t);
return save ();
}
gerendo 的错误是这样的:
在 ObjectStateManager 中找不到其键与所提供对象的键匹配的对象。验证提供的对象的键值是否与必须应用更改的对象的键值相匹配。
有谁知道如何解决这个问题?
最佳答案
ApplyCurrentValues
将提供的分离实体的值更新为附加实体。此异常表示您没有具有相同 key 的附加实体。这意味着在调用此方法之前,您没有在同一上下文中从数据库加载实体。
您可以将您的方法修改为:
public Boolean Change<TEntity>(TEntity entity) where TEntity : EntityObject
{
// Loads object from DB only if not loaded yet
ctx.GetObjectByKey(entity.EntityKey);
ctx.ApplyCurrentValues<T>(entity.GetType().Name, entity);
ctx.SaveChanges();
}
关于c# - 更新对象的通用方法错误( Entity Framework 4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5347574/