2010-07-26 60 views
1

我正在寻找处理在数据库(不在客户端)上计算的列的最佳方式。原因是表现。实体框架高级计算字段?

例如,这是一个发票计划,每个客户旁边我想显示当前余额(所有发票金额减去所有付款金额)。我可以想到3种方法来实现这一点:

1)将一个属性添加到客户类,它计算客户端的余额。这显然没有效率;这是我目前所做的。

2)我可以使用实体sql来计算它在分贝?我根本不知道实体sql,所以在我学习之前我想知道它是否可能/实用。

3)创建于而不是表

我缺少的东西更好的数据库和地图上的看法?哪个最好?

谢谢! -Carl

对于它的价值,选项#3似乎对我来说是最实用的。我创建了看法,但现在我当它关联到原来的表会遇到一个问题 - 问题说明如下:Entities framework mapping association between view and table

+0

余额必须是最新的?涉及从另一个表中选择和处理一堆行的计算总是会引入一些开销,所以也许最好在批处理中计算而不是按需计算。 即使批处理不是一个选项,考虑可接受的陈旧性可能意味着您可以考虑某种缓存方法。 – pdbartlett 2010-07-26 11:08:38

+0

它可能是可以接受的,但为了学习的目的(我是新来的实体框架),简单性和100%准确性,我宁愿将它作为实时计算。这个发票应用程序是我自己使用的,所以数据库非常小。 – tenfour 2010-07-26 11:14:26

回答

1

您可以在“局部类”属性添加到您的客户类。您可以在附加属性中执行计算;只需在项目中添加一个文件并将该类定义为部分类Customer。当您重新生成模型代码时,它不会被覆盖。