【发布时间】:2015-08-21 04:58:27
【问题描述】:
我正在使用实体框架 6 和数据库优先方法来构建项目,
假设这两个表:
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 发生变化,我需要重新计算和更新 totalPrice 值。
2-秒方法是使用存储过程。
3-和第三个是使用触发器。
就计算、开销和时间而言,哪种方法最优化?
如果有任何其他方法可以做到这一点,请告诉我。
【问题讨论】:
-
这里的视图似乎是个不错的选择,
-
您不应该在数据库中有计算列。只需在模型中有一个返回计算值的属性
-
@StephenMuecke 问题是每次我创建模型的新实例时,计算都会重新发生。
-
应该是这样的!
-
在循环中添加一个测试方法,初始化模型的 1000 个新实例(包括计算属性)。在我的笔记本电脑上,这需要 2 到 3 毫秒。它微不足道(就像记忆一样)
标签: .net sql-server asp.net-mvc entity-framework optimization