2

正如您使用實體框架核心的人可能知道的那樣,當前版本沒有針對實體的CurrentValues.SetValues()實現。看起來這個支持將會在下一個版本v1.1中出現,正如issue所述。在此之前,有沒有人有解決方案,更新實體條目?ASP.net核心實體框架CurrentValues.SetValues()最佳當前選擇

爲背景,在過去的實體框架setValues方法函數接受一個實體和更新其屬性作爲參數傳遞,即一個實體的值:

var updatedEntity = currentEntity.CurrentValues.SetValues(newValues); 
_dbContext.SaveChanges(); 

我發現一些實現使用的PropertyInfo到做一個通用的更新功能,但沒有發現任何看起來不錯的清潔解決方案。可能只需要採取我可以通過:)

p.s.我意識到這個函數只適用於沒有複雜對象圖的簡單實體,這些對象圖需要更新其他相關實體。我的用例很簡單。只是現在不得不手動映射屬性而煩人。

+1

你可以使用1.1.0預覽。 –

+1

我與@GertArnold。既然你已經加入了EF Core beta測試程序(EF Core v1.0實際上是這樣),另外還有一個不會傷害:) –

+1

@IvanStoev我同意它的感覺就像是一個測試版本,經常發生的事情:)我會研究1.1預覽。謝謝你的回覆 –

回答

1

編輯:現在EF核心v1.1.0已發佈,CurrentValues.SetValues()將工作。

請參見下面的代碼片段

var currentEntity = dbSetEntity.Find(id); 
_dbContext.Entry(currentEntity).CurrentValues.SetValues(newValues); 
+0

是的,這應該工作。請注意,CurrentValues.SetValues()直到最近發佈的v1.1.0纔可用,正如我們在上面的評論中討論的。 –