3

Я использую Entity Framework 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 здесь, – Magnus

+0

Вы не должны иметь вычисленный столбец в базе данных. Просто у меня есть свойство в модели, которое возвращает вычисленное значение –

+0

@StephenMuecke Проблема в том, что каждый раз, когда я создаю новый экземпляр модели, вычисление повторяется. –

ответ

0

У вас может быть вычисленная колонка в DDL. CREATE TABLE tablname ( ID INT, имя VARCHAR (20) spenthours ИНТ TaskID INT, fn_totalprice (spenthours, идентификатор) в качестве totalprcie)

Функция может быть функции создания fn_totalprice spenthours Int, ID Int AS ( SELECT (e.spenthours * t.taskprice) как totalprice от сотрудников е внутреннее объединение задачи т на е. @ ID = t.id возвращение totalprice )

Смежные вопросы