2012-12-22 60 views
0

我有兩個站點,一個管理站點,我可以在其中編輯數據庫中的所有值以及只從數據庫讀取數據的公共站點。 這兩個站點都有相同的dbml文件來處理數據庫。 當我插入一輛新車(網站是關於汽車的,所有的價值都與汽車有關)並且它是數據,插入的值立即顯示在公共網站上...當我更新汽車的數據時,數據庫中的值立即改變,但公共網站不斷顯示舊的值... 我讀到我可以使用每個查詢的dbml文件的新實例強制dbml文件讀取數據庫中的值...強制linq dbml文件獲取數據庫值

我這樣做,在這裏我把我的人查詢代碼文件下面的代碼...但是,這並不工作...

Public Shared AixamReader As FrontstoreAdministrationDataClassesDataContext = New FrontstoreAdministrationDataClassesDataContext 

然後我打電話AixamReader每個查詢...

有沒有更好的方法來強制dbml文件從數據庫中獲取更新的值?

回答

0

問題的原因不是DBML文件。 DBML不會讀取或查詢您的數據,它只是生成實際工作的類的基礎。

因此,在實際數據庫中更新/插入數據對您的DBML文件沒有任何影響。

我想你在這裏調用DMBL文件,實際上是DataContext。

是的,如果您使用「舊」DataContext來執行查詢,並且同時您的數據由另一個進程更新,它將不會顯示在您使用該DataContext執行的查詢中。這也被稱爲「陳舊的數據上下文」。

因此,爲每個請求使用新的DataContext並解決您的問題。無論如何,DataContexts非常輕量級,並被設計爲以這種方式使用(每個工作單元都有一個新的)。

+0

這是我已經閱讀過的其他評論。但顯然我沒有得到它正確的,因爲我用我的帖子中顯示的代碼,我每次都得到我的datacontext的新實例。那麼我在哪裏以及如何調用我的datacontext的新實例呢? thx爲explenation。 – Bongo

+0

好吧,它是公共和共享的,所以很可能你正在重複使用它?我總是有一個局部變量,它周圍有一個Using(),但我是一個C#人 – Pleun