实体框架:没有Id的通用比较类型?

时间:2012-01-20 22:45:40

标签: entity-framework generics equality

在没有具有ID的对象的情况下,是否存在对象之间的比较?

我正在尝试做一个典型的通用更新,我已经看过很多在线的例子,但它们通常都是这样的:

public void Update(TClass entity)
{
    TClass oldEntity = _context.Set<TClass>().Find(entity.Id);
    foreach (var prop in typeof(TClass).GetProperties())
    {
        prop.SetValue(oldEntity, prop.GetValue(entity, null), null);
    }
}

或类似的东西。我的系统的问题是并非每个类都有一个名为Id的属性,具体取决于Id可以是ClassnameId的类。那么无论如何我要通过LINQ检查是否存在并返回这样的实体而不提供任何属性?

1 个答案:

答案 0 :(得分:1)

尝试

public void Update(TClass entity)
{
    var oldEntry = _context.Entry<TClass>(oldEntity);

    if (oldEntry.State == EntityState.Detached)
    {
         _context.Set<TClass>().Attach(oldEntity);
    }

    oldEntry.CurrentValues.SetValues(entity);
    oldEntry.State = EntityState.Modified;
}