The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

當使用 DetailsView + LinqDataSource 時發生更新衝突

之前我曾經寫過一篇【解決 LINQ to SQL 資料庫更新衝突的情形】,主要是講解在寫 LINQ to SQL 程式的時候(Code Behind)若發生衝突的解決辦法,但我最近遇到的問題是,當我的頁面用的是 DetailsView + LinqDataSource 且完全是用宣告(Declarative)的方式寫成的,也就是改頁並沒有寫任何程式碼,這時發生了衝突的狀況的錯誤訊息是 Row not found or changed (如下圖示),不過卻完全看不出哪裡錯了,只知道新增資料的時候不會出錯,但每次更新或刪除的時候都會出錯,而從堆疊追蹤(Stack Trace)所顯示的訊息來看,也沒地方讓我修改,遇到這種問題先不要驚慌,因為這應該只能用我文章中說明的第三種方法進行設定了。

... 繼續閱讀 ...

在寫 ASP.NET 的時候要謹慎使用靜態(static)欄位

最近發現了一個之前開發過的網站,大約兩、三天就會發生「已經開啟一個與這個 Command 相關的 DataReader,必須先將它關閉。」的錯誤訊息,整個網站可以正常編譯,代表語法沒問題,測試的時候可以正常執行也不會發生 Exception,但只要一到了客戶那邊的主機執行個幾天就會開始出現問題,但通常多 reload 幾次網頁就會正常執行就好了,完全是一個很詭異的狀況。

... 繼續閱讀 ...

用 SqlCacheDependency 快取 LINQ to SQL 的查詢結果

在 ADO.NET 2.0 有個 Query notifications (SqlDependency) 機制,讓 SQL Server 2005 能夠主動通知你的應用程式(Application)來源資料是否變更,尤其是在做資料快取(Cache)的時候特別有效率。但自從改用了 LINQ to SQL 好像就很少人提到如何利用 SqlCacheDependency 類別進行 LINQ to SQL 查詢後的結果做快取。

... 繼續閱讀 ...

Dynamic LINQ 讓 LINQ 的世界變的更美好

身為一個程式設計師最討厭的就是被侷限在框框裡寫程式,我們唯一的限制應該是在我們的創意而非架構。像 LINQ 剛出來的時候我覺得超級好用,不過等用在專案上實做的時候才發現綁手綁腳的,想要動態組成一個 LINQ 語法難上加難,結果過沒多久就在 ScottGu's Blog 看到一篇 Dynamic LINQ (Part 1: Using the LINQ Dynamic Query Library),看到的時候好像挖到寶一樣,以前在開發時卡住的問題全部都解決了,從今年 2 月份用到現在簡直是幾乎忘了它的存在,以致於這幾個月都沒有提及 Dynamic LINQ 這個好東西,直接上週一個朋友問我:『LINQ 的 Where 條件可以像以前組 SQL Command 一樣動態組裝嗎?』,我馬上跟他說有 Dynamic LINQ 這個東西,不用多說,他跟我剛看到 Dynamic LINQ 的時候一樣覺得:Bravo! ( 太棒了 )

... 繼續閱讀 ...

善用 LINQ to SQL 中的 partial class 機制進行資料格式驗證

我們通常會使用 DetailsView 或 FormView 控制項進行資料的新增、編輯、刪除等動作,而通常我們會在裡面放置許多 Validator 控制項以驗證資料格式是否正確,不過當進行較大的專案時,開發人數通常會比較多,而且人員之間的分工也會比較明確,有的人做 SA、有的人做 DBA、有的人做 ASP.NET UI Process 開發...等等,在分層負責的情況下若能夠有效分割工作,不但專案品質會比較高,大家在寫程式的過程中也會比較專注。

... 繼續閱讀 ...