每當創建模型時,我都試圖在我的模型中自動設定模型內部的屬性值,以自動進入資料庫,但這需要依賴基于它的其他兩列的值。
本質上,我試圖根據模型的身高和體重自動計算個人的 BMI。
var person = new PersonBmi
{
Height = 183,
Weight = 72
}
_context.PersonBmis.Add(person);
_context.SaveChanges();
現在我希望實作的是,當這個模型被創建并插入到資料庫中時,我將能夠使用我已經創建的方法計算模型中 bmi 的值,而不必在任何地方呼叫它。
這是我的BMI計算方法:
public static double CalculateBmi(double height, double weight)
{
return weight / Math.Pow(height / 100.0, 2);
}
我嘗試使用 getter 和 setter,但不幸的是,由于我沒有在 Bmi 屬性中放置任何東西,我無法設定它。我不知道模型是否有我可以做的生命周期掛鉤,或者我是否需要在 db 背景關系中執行此操作并查看模型是否已創建/修改。
目前,我正在做以下事情:
var height = 183;
var weight = 73;
var person = new PersonBmi
{
Height = height,
Weight = weight,
Bmi = PersonBmi.CalculateBmi(height, weight)
}
正如你所知道的,這不是最好的。
uj5u.com熱心網友回復:
我建議[NotMapped]在僅獲取派生屬性上使用 ,以允許將模型保存到資料庫而不使用派生值
正如評論中提到的,您可能不想冒這個衍生值過時的風險。就像是:
public class PersonBmi
{
public double Height { get; set; }
public double Weight { get; set; }
[NotMapped]
public double Bmi => weight / Math.Pow(height / 100.0, 2);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/313345.html
下一篇:樹視圖MVC未正確填充
