1

我正在使用實體model.i更新了一個名爲SalesDetialView的視圖。使用實體模型中的視圖不打印重複值

在salesdetialview中,我有3個實體鍵。有1.型號2.No,3.Custmor enter image description here

SQL:我使用此查詢(我打印僅有5列)

選擇客戶,類型,沒有,營業員,量SalesDetailView enter image description here

但通過實體模型,我沒有得到重複值(否)。看到這個屏幕下方enter image description here

現在我有疑問,爲什麼它沒有顯示重複的值。任何與實體鍵或任何事物相關的事物。請建議我在哪裏做錯了。

+0

EF發出什麼查詢? –

回答

1

如果多個行在主列中共享相同的值,則只有第一個似乎從數據庫中檢索並複製到這些其他行中。舉例來說,如果一組有2列,第一個是標記爲主列,

the correct result should be: 

A, 1 
A, 2 
B, 4 
B, 6 
B, 7 
C, 5 


The actual result in code with Entity Framework would become: 


A, 1 
A, 1 
B, 4 
B, 4 
B, 4 
C, 5 

當包括在你的實體模型的視圖,該模型似乎簡單地使用先不要空列作爲主鍵(因爲主鍵中使用的所有列應該是不可空的)。 要解決此問題,請確保正確選擇主鍵列。如果您無法創建正確的主鍵,因爲有空值或者沒有設置每列不同的列,請嘗試向您的視圖添加一列,該列始終包含每行的唯一值。添加完成後,請確保將其設置爲實體模型中的主鍵。

如果我將這兩行設置爲上述示例中的主要列,我會得到所需的結果。

+0

使用主列我們不顯示重複。但在我看來,它沒有PK列。當在sql中運行quary時,它顯示所有行。但不是通過實體模型。 – Kavitha

1

你可以通過改變ObjectSet的合併選項來解決它。例如:

using (TargetDBDataContext db = new TargetDBDataContext()) 
     { 
      db.SomeView.MergeOption = System.Data.Objects.MergeOption.NoTracking; 
      return db. SomeView.ToList(); 
     } 
相關問題