在没有具有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检查是否存在并返回这样的实体而不提供任何属性?
答案 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;
}