2010-07-26 7 views
1

Я ищу лучший способ обработки столбцов, которые вычисляются по базе данных (а не у клиента). Причиной этого является производительность.Объекты с расширенными расчетными полями?

Например, это программа выставления счетов, а рядом с каждым клиентом я хочу отобразить текущий баланс (все суммы счетов-фактур минус все суммы платежей). Я могу думать о 3 способах достижения этого:

1) добавление свойства к классу Customer, которое рассчитывает баланс на стороне клиента. Это, очевидно, неэффективно; это то, что я сейчас делаю.

2) Могу ли я использовать сущность sql для вычисления ее в db? я вообще не знаю сущности sql, поэтому, прежде чем я пойду учиться, я хочу знать, возможно ли это для этого.

3) создать представление в базе данных и карты в том, что вместо таблицы

я упускаю что-то лучше? Что лучше?

Спасибо! -Carl

[edit] Для чего это стоит, вариант № 3 представляется мне наиболее практичным. Я создал представление, но теперь я столкнулся с проблемой при связывании его с исходной таблицей - проблема описана здесь: Entities framework mapping association between view and table

+0

Насколько современный баланс должен быть? Расчет, который включает в себя выбор и обработку набора строк из другой таблицы, всегда будет вводить некоторые накладные расходы, поэтому, возможно, лучше вычислить его в пакетном процессе, а не по требованию? Даже если пакетная обработка не является вариантом, мышление о приемлемой стойкости может означать, что вы можете рассмотреть какой-то подход кэширования. – pdbartlett

+0

это может быть приемлемо, но с целью обучения (я новичок в инфраструктуре сущностей), простоты и 100% -точности, я бы предпочел сделать это в режиме реального времени. это приложение для выставления счетов для моего собственного использования, поэтому база данных довольно мала. – tenfour

ответ

1

Вы можете добавить свойства своего класса Customer в «частичный класс». Вы можете выполнить вычисления в дополнительном свойстве; просто добавьте файл в проект и определите класс как частичный клиент класса. Она не будет перезаписана при обновлении кода модели.

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