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

本文关键字:一个 复制 EntityQuery RIA | 更新日期: 2023-09-27 18:07:36

在我的应用程序中,我执行了一个实体查询。如果我使用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。实体包含,我注意到,当一个条目的'Val'数字已经出现(即像上面的52),然后LoadOperation。实体集合使用来自前一个条目的数据(值为52),而不是实际日期。在上面的数据中,我的LoadOperation。实体看起来像(注意,日期现在是重复的,似乎是因为'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);

eventandler是

    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。实体已经不正确。任何帮助将是感激的,因为这是搞砸了一些图表的东西,我正在工作。

感谢

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

您需要设置以下内容。

context.vwKeyData.MergeOption = MergeOption.OverwriteChanges;

OverwriteChanges将确保始终从数据源加载数据。

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

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