2015-06-06 118 views
3

我使用實體框架6和數據庫第一種方法來建立一個項目,
假設這2個表:實現計算列的最佳方式是什麼?

Tasks 
id | taskName | taskPrice 
1 | Making UI| 100 
2 | Debugging| 70 

,第二個表:

Employees 
id | Name | spentHours| taskId | *totalPrice* 
1 | Iman | 10  | 2  | (10 * 70) = 700 
2 | Sam | 5  | 1  | (5 * 100) = 500 

我需要做totalPrice值可用於我的項目的所有部分,因此最好不要爲每次使用計算它。
爲了實現這一點,我到目前爲止這三個解決方案: 1-我可以分配一個列totalPrice並更新它的值,我不認爲這是最優化的方式,因爲如果taskPrice更改I需要重新計算&更新totalPrice值。

2-秒方法是通過使用存儲過程。

3-和第三個是通過使用觸發器。

哪一種方法是計算最優化的方法,高於&時間?
如果還有其他方法,請告訴我。

+1

的視角看起來像股份公司ood choice here, – Magnus

+0

數據庫中不應該有計算列。只需在模型中有一個返回計算值的屬性 –

+0

@StephenMuecke問題是,我每次創建模型的新實例時,計算都會重新出現。 –

回答

0

你可以在DDL中有一個計算列。 CREATE TABLE tablname ( ID INT, 名VARCHAR(20) spenthours INT, 的taskid INT, fn_totalprice(spenthours,ID)作爲totalprcie)

的功能可以是創建函數fn_totalprice spenthours INT,ID INT AS ( SELECT(e.spenthours * t.taskprice)作爲totalprice 從僱員e 內對電子join任務噸。@ ID = t.id 回報totalprice )

相關問題