1 回答

TA貢獻(xiàn)1790條經(jīng)驗 獲得超9個贊
Update方法用于所謂的強制更新,即,當(dāng)您確定存在的實體斷開連接時。它可以在不從數(shù)據(jù)庫加載實體的情況下工作,并且只需更新所有屬性即可。
以您的示例為例,強制更新如下所示:
if (context.Discounts.Any(x => x.DiscountId == id && !x.Deleted))
{
? ? context.Update(discount);
? ? context.SaveChanges();
}
如果只想更新已更改的屬性(如果有),則應(yīng)該加載數(shù)據(jù)庫實體并使用該CurrentValues.UpdateValues方法來應(yīng)用更改:
var dbDiscount = context.Discounts.FirstOrDefault(x => x.DiscountId == id && !x.Deleted);
if (dbDiscount != null)
{
? ? context.Entry(dbDiscount).CurrentValues.SetValues(discount);
? ? context.SaveChanges();
}
請注意,在這種情況下,EF可能根本不會發(fā)出更新命令(如果所有屬性值都與原始屬性值相同),即SaveChanges可以返回0,因此您不應(yīng)將其用作成功的指示。實際上,您永遠(yuǎn)不應(yīng)將其用于此目的,因為EF會拋出異常,這是有問題的。
- 1 回答
- 0 關(guān)注
- 151 瀏覽
添加回答
舉報