我使用通用存储库模式和工作单元。我正在更新记录,我有一列存储记录的状态,而且它不是来自视图本身。因此,当我更新记录时,我想从存储库中设置该值,但我无法获取实体的属性。这是我更新记录的示例代码。 T有isDeleted属性并且它为null,但我想在这里设置该值。 我怎么能这样做?
public void QuickUpdate(T original, T updated)
{
_dbSet.Attach(original);
_context.Entry(original)
.CurrentValues
.SetValues(updated);
_context.Entry(original).State = EntityState.Modified;
}
答案 0 :(得分:0)
我不知道你的对象模型,但我做的是最简单的例子。我们假设您的Record
为T
类型,密钥为Id
属性。
public void QuickUpdate(Record original)
{
Record updatedRecord = _dbSet.Records.FirstOrDefault(r => r.Id == original.Id);
updateRecord.IsDeleted = true;
_dbSet.SaveChanges();
}
我并不完全关注original
和updated
如何一起玩的问题,但在实体上设置单个属性就像那样简单。
答案 1 :(得分:0)
这是答案。 - 更新。
var originalStatus = original.GetType().GetProperty("isDeleted").GetValue(original);
updated.GetType().GetProperty("isDeleted").SetValue(original, true);
_dbSet.Attach(original);
_context.Entry(original)
.CurrentValues
.SetValues(updated);
_context.Entry(original).State = EntityState.Modified;