實體框架。查看返回重複記錄

duplicates entity-framework

我使用包含視圖的實體框架。我有疑問:

var data = this.context.vwRevenues
    .Where(x => x.revenue >= 0);
    .OrderByDescending(x => x.year)
    .ThenByDescending(x => x.month)
    .Take(10)
    .ToList();

此查詢返回實體集,但第一個實體等於第5個。

data[0] == data[4] // true

我從sql tracer獲取此查詢的sql腳本並將其運行到SQL Management Studio中,它返回不同的記錄。

一般承認的答案

根據@Giovane答案

我們的系統中存在同樣的問題,實體框架處理視圖。嘗試使用ROW_NUMBER()OVER()SQL創建一個具有唯一值的列,但不起作用。

我做了同樣的事情,但為了使它工作,我需要打開EDMX模型,然後選擇此列作為實體鍵。

在此輸入圖像描述

然後它會工作

有一篇非常好的文章

重複記錄

文章最重要的一行是:

在實體模型中包含視圖時,模型似乎只使用第一個不可為空的列作為主鍵(因為主鍵中使用的所有列都應該是不可為空的)。


熱門答案

你只需要這樣做: context.viewname.AsNoTracking().Where(x => x.ColumnName != null);



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因