使用VS 2013(VB)和SQL Server 2012的使用.dbml文件LINQ
我執行存儲過程使用LINQ來填充GridView控件執行存儲過程。
Dim db As New GMConnectionDataContext
Dim gasHedges = db.GasHedges_create2ndMonth.ToList
存儲過程返回一個結果集並一直工作正常,因爲它返回期望的結果並且gridview按需顯示。
我添加了一些數據到我的SQL表,並加載了網頁,新的數據沒有顯示。如果我在SQL Server中執行存儲過程,則會顯示新數據。如果我在VS中執行存儲過程,則會顯示新數據。
現在這個奇怪的位。如果我從.dbml
文件中刪除對存儲過程的引用,然後重新添加它,新數據將在頁面加載時顯示。我知道當使用這個文件時,如果我在表中添加列,那麼我需要刪除它並重新將該表添加到.dbml
文件中。
當然,存儲過程並非如此,因爲它們將不可用。有什麼我失蹤?
修訂
我想我知道爲什麼會這樣發生,但我不知道如何解決它。 SQL結果集具有動態列,因爲我在SQL中使用了pivot命令。這意味着,如果用戶創建一個新的Gas公司,結果集將有另一列,並且datacontext必須將SP解釋爲已更改並仍顯示舊數據集。這意味着我不能只從數據上下文中刪除SP,並重新添加它,因爲如果用戶添加其他公司,則Web應用程序需要處理該SP。
所以我每次運行存儲過程都需要這樣做? – Silentbob 2014-10-13 13:35:11
另外我該怎麼做 – Silentbob 2014-10-13 13:35:39
是的。您所做的任何更改都需要在.dbml文件中更新。如果你展開你的dbml,你會看到一個設計器文件,在那裏是你的存儲過程和表的定義。這些需要在更改時重新生成。在Visual Studio中,打開.dbml文件,您將看到您的表格和存儲的特效。您可以右鍵單擊並刪除更改的內容。然後,打開您的服務器資源管理器並展開您的dbml正在使用的連接,然後拖放更新的項目。建立你的項目,一切都會更新。 – MikeHe 2014-10-13 13:40:23