私は、指定された列の更新を実装するためにefとreflectionを使用しています。 文字列が正確にexexuteすることができます。数字の列は1回更新すると変更され、2回目は0になりました。EF:データベースを更新するのがなぜ数値型列が0になるのですか?
public void UpdateSpecified(T entity)
{
var props = entity.GetType().GetProperties();
foreach (var prop in props)
{
if (prop.PropertyType.IsPrimitive || prop.PropertyType == typeof(string))
{
string propValue = prop.GetValue(entity, null) != null ? prop.GetValue(entity, null).ToString() : string.Empty;
if (!string.IsNullOrEmpty(propValue))
{
DataContext.Entry<T>(entity).Property(prop.Name).IsModified = true;
}
else
{
DataContext.Entry<T>(entity).Property(prop.Name).IsModified = false;
}
}
}
}
サービス層コード:
g.Id = good.Id;
g.GoodsQuantity = good.GoodsQuantity - 1;
goodsRepo.Attach(g);
goodsRepo.UpdateSpecified(g);
_repositoryFactory.Commit();
2回目の更新前にdbからフェッチしていますか? – Oluwafemi
こんにちは、私はそれを解決しました、私の答えを参照してください – MapleStory