我正在爲ASP.NET中的客戶端編寫一個簡單的Web表單。提交時,表單會發送一封電子郵件。其中一個要求是每封電子郵件都應該有一個順序票號。可能生成沒有數據庫表的序列號?
我已經完成了這兩個選項,包括將最後一個數字寫入數據庫,然後選擇並遞增它,或者使用文本文件進行類似的操作。
我想避免一個外部依賴如果可能的話,創建一個數據庫表的單個值似乎是矯枉過正。但是,文本文件的方法確實很不方便,如果文本文件被刪除或覆蓋,則很容易失敗。
我可能會考慮其他選擇嗎?
我正在爲ASP.NET中的客戶端編寫一個簡單的Web表單。提交時,表單會發送一封電子郵件。其中一個要求是每封電子郵件都應該有一個順序票號。可能生成沒有數據庫表的序列號?
我已經完成了這兩個選項,包括將最後一個數字寫入數據庫,然後選擇並遞增它,或者使用文本文件進行類似的操作。
我想避免一個外部依賴如果可能的話,創建一個數據庫表的單個值似乎是矯枉過正。但是,文本文件的方法確實很不方便,如果文本文件被刪除或覆蓋,則很容易失敗。
我可能會考慮其他選擇嗎?
我可能會使用帶有標識(自動增量)列的數據庫,主要是因爲它需要在多個線程或同一應用程序的分佈式版本之間進行鎖定。它還可以從重新啓動和其他系統事件中很好地恢復。
大多數數據庫都提供了在插入操作期間返回遞增ID的方法,所以您不必選擇記錄以返回遞增的ID。
同意,加上他可能會想以簡單的方式找出已發送多少張彩票。地獄,我會在委託人身上包含日期和任何其他信息。 – 2011-04-27 14:13:08
同意。 datecreated/datemodified總是有價值的低成本信息。 – 2011-04-27 14:14:10
我會推薦使用類似sqlite的東西,如果你真的想保持輕量級。 – Jess 2011-04-27 14:18:11
您可以在您的應用程序狀態中放置一個計數器。但是,在應用程序重新啓動時(例如IIS restarrt),這種情況將會丟失,並且不會在服務器場中的多個Web服務器之間共享。我不建議這樣做
您可以將對象序列化到磁盤,然後在您需要時反序列化。將序列化的文件放在受保護的位置。儘管這種方法存在併發問題。
我們最終只做了一個兩列數據庫表。工作得很好,雖然它確實引入了額外的依賴關係。 – 2011-06-07 15:43:40