用EF6查詢資料庫的資料,查詢的結果跟預想的不一樣。資料庫結構很簡單,資料型別全是int。

查詢兩次,分別使用不同的關鍵字進行查詢,得出的查詢結果卻是一樣的,第二次查詢把第一次查詢的結果覆寫了。查詢的代碼如圖。

但是如果使用圖中注釋掉的代碼進行查詢的話,就不會發生覆寫的情況。在除錯的時候也能發現這一點,使用當前的代碼進行除錯,發現第一次查詢的結果列舉出來是正常的,但是第二次查詢以后再列舉結果就發現第一次的結果就不對了。這個應該是跟EF的延遲加載有關系,但是我理解延遲加載至少應該把查詢運算式給記錄下來吧,怎么會在查詢的時候重新生成運算式嗎?這樣的話有點擔心之前的代碼會出現類似的問題啊。
uj5u.com熱心網友回復:
where st.id==1 || st.id==2 這樣不香嗎uj5u.com熱心網友回復:
會不會是id值變了的原因?uj5u.com熱心網友回復:
我是需要把等于兩個id的分別取出來,然后賦值給兩個物件,不能合在一起。
uj5u.com熱心網友回復:
肯定是因為id值變了的原因,但是這個跟我的預期不符。為什么會這么設計啊?
uj5u.com熱心網友回復:
查詢出來之后再分 在一般情況下 訪問資料庫次數越少 效率越高 能交給程式干的就別麻煩資料庫uj5u.com熱心網友回復:
我現在關注的不是查出來之后再分的問題,我這程式對效率要求不高,查出來就行。我原來以為EF的延遲加載是先生成sql陳述句,然后需要結果的時候再去查詢。第一次查詢生成“select * from testyc where id=1",然后第二次查詢生成“select * from testyc where id=2"。但是現在看來不是這樣的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/144664.html
標籤:C#
上一篇:C#直接列印PDF問題
下一篇:二級聯動顯示資料
