在泛型方法中更新对象时出错

时间:2019-10-01 07:43:51

标签: c# entity-framework entity-framework-core

bellow错误发生在我想要更新我的实体时。 我正在检查所有物体。看来一切都很好

public int Update(T entity)
{
    T data = _entities.Find(entity);
    _entities.Update(data);

    return context.SaveChanges();
}

System.ArgumentException:'在以下位置调用的位置0处的键值     'DbSet.Find'的类型为'Hazine',与      属性类型为“字符串”。

enter image description here,但是当我要更新此错误时

1 个答案:

答案 0 :(得分:0)

必须将主键作为参数发送给find方法。可以使用:

Type t = entity.GetType();
PropertyInfo prop = t.GetProperty("Id");
object id= prop.GetValue(entity);   
T data = _entities.Find(id);

您不需要从数据库中获取实体。您可以使用以下代码:

public int Update(T entity)
{
    context.Entry(entity).State = EntityState.Modified;
    return context.SaveChanges();
}