使用ASP.NET,我正在構建一個管理工具,需要一個函數來導入一個電子郵件地址列表。在上傳文件時,我想檢查提供的任何電子郵件地址的現有記錄。對於不存在的電子郵件地址,我會使用我的DAO創建它們。建立一個導入過程,檢查重複項
基本上我想:
- 接收電子郵件的列表
- 檢索數據對現有的電子郵件
- 以dB爲列表中的所有電子郵件創建新的郵件數據
- 返回完整數據。
因爲我想知道哪些電子郵件的前存在的時候,我首先想到的是查詢表中的所有記錄WHERE Email IN ('Email001FromFile', 'Email002FromFile', 'etc...')
但列表中可能包含數千個電子郵件地址,而我不能肯定該供應IN運營商的許多電子郵件地址將是一個好主意。
我也考慮過循環遍歷列表並檢查每條電子郵件的記錄,但這可能會產生太多的查詢。
我的下一個想法是生成一個臨時表來保存列表並修改IN子句以使用臨時表,而不是明確的項目列表,但這需要我直接執行SQL或存儲過程,由於我使用NHibernate來訪問我的數據庫,所以我不傾向於這麼做。
儘管我使用的是ASP.NET(C#)和NHibernate,並且任何具體的答案都會有幫助,但我只是在尋找關於如何處理這種情況的一般想法。
僅僅因爲你使用的NHibernate不應該讓你使用存儲過程。有時候SP是最好的方法,特別是像這樣的時候,你不希望將所有現有記錄帶入內存。使用正確的工具來完成這項工作,而不僅僅是你現在掌握的工具。 – 2010-12-01 21:03:38