RIA EntityQuery复制其中一个值匹配的行

时间:2011-09-02 10:25:54

标签: c# silverlight ria

在我的应用程序中,我执行实体查询。如果我使用SQL分析器,捕获生成的SQL查询,并手动运行它,它会给出我期望的结果。 例如

Val     Date
68  2011-05-31 00:00:00.000
48  2011-05-30 00:00:00.000
92  2011-05-29 00:00:00.000
52  2011-05-28 00:00:00.000
32  2011-05-27 00:00:00.000
32  2011-05-26 00:00:00.000
52  2011-05-25 00:00:00.000
81  2011-05-24 00:00:00.000

如果我在代码中粘贴一个断点并查看LoadOperation.Entities包含的内容,我注意到当条目的'Val'数字已经出现时(IE如上面的52),那么LoadOperation.Entities集合使用来自上一个条目的数据(值为52),而不是实际日期。 所以在上面的数据中,我的LoadOperation.Entities看起来像(请注意,日期现在重复,似乎因为之前发生了'Vals')

68  2011-05-31 00:00:00.000
48  2011-05-30 00:00:00.000
92  2011-05-29 00:00:00.000
52  2011-05-28 00:00:00.000
32  2011-05-27 00:00:00.000
32  2011-05-27 00:00:00.000
52  2011-05-28 00:00:00.000
81  2011-05-24 00:00:00.000

有谁知道为什么会这样?

My EntityQuery看起来像

    var appDataQuery = context.GetVwKeyDatasQuery().Where(d => d.KPIDate <= OverViewDate && d.GELID == GelID && d.ClockworkID == ClockWorkID).OrderByDescending(d => d.KPIDate);

这会生成正确的T-SQL,在SQL查询分析器中执行时会返回正确的值。

其余代码是

    LoadOperation lo = context.Load<vwKeyData>(appDataQuery);
    lo.Completed += new EventHandler(LoadOperation_Completed);

EventHandler是

    public void LoadOperation_Completed(object sender, EventArgs e)
    {
    LoadOperation<vwKeyData> histResults = sender as LoadOperation<vwKeyData>;
    int _count = 0;
    foreach (vwKeyData v in histResults.Entities)
    {.......

此时histResults.Entities已经不正确了。任何帮助将不胜感激,因为这搞砸了我正在努力的一些图表。

由于

中号

2 个答案:

答案 0 :(得分:1)

您需要设置以下内容。

context.vwKeyData.MergeOption = MergeOption.OverwriteChanges;

OverwriteChanges将确保始终从数据源加载数据。 这应该有助于解决我们的问题。

答案 1 :(得分:1)

如上所述回答。唯一标识一行所需的每一列都应设置为模型中的实体键。

(右键单击模型设计器中的列并选择Entity Key)。