我是數據庫編程的新手,希望獲得關於性能/最佳實踐的一些提示。我正在解析一些網站,以廢除電視劇集信息並將它們放入MS SQL 2008 R2關係數據庫中。通過LINQ to SQL在C#中無需批量刪除的新對象更新表#
比方說,我有一個表填充類型Episode。當我開始新的解析時,我生成了一個新的Episodes列表。問題是,我希望數據庫與新列表完全匹配。目前我正在進行批量刪除,然後全部插入。問題是我不確定這是否是最好的方法,特別是因爲我關心數據持久性(episode_id主索引長時間保持不變)。
是否有一些簡單的方法可以將任何新劇集插入到表格中,更新任何已經改變的劇集,並刪除不再存在的任何劇集,以便最終結果與新劇集列表完全相同。一集將通過系列編號,季節編號和情節編號進行比較。
編輯:
A系列類型包含多種不同的情節類型的列表,例如:
public void ParseTVDB(Series ser)
{
var eps = new List<TVDBEpisode>();
//... Parse tvdb and add each epsiode to this list
//... Make the Series' existing TVDBEpisodes match the new TVDBEpisodes
}
public void ParseTVRage(Series ser)
{
var eps = new List<TVRageEpisode>();
//... Parse tvrage and add each epsiode to this list
//... Make the Series' existing TVRageEpisodes match the new TVRageEpisodes
}
public void ParseTVcom(Series ser)
{
var eps = new List<TVcomEpisode>();
//... Parse tvcom and add each epsiode to this list
//... Make the Series' existing TVcomEpisodes match the new TVcomEpisodes
}
聯繫起來我讀博客。它看起來會對我給出的簡單解釋起作用,但事實是DataContext比這更復雜一點。例如,一個系列有我解析的每個網站的劇集列表(目前約3個)。所以我只會一次解析一個網站。然後,我會爲每個情節類型創建一個類似於上次SaveContact()的SaveSeries(Series ser)嗎? – user380527 2010-10-02 03:08:24
我編輯了我的原始文章,以反映我的意思是多個情節類型。 – user380527 2010-10-02 03:20:53
好的,如果我正確解釋你的場景,你希望L2S爲你自動合併。 XXXAllOnSubmit()L2S方法本身不會這樣做。不知道你在做什麼「匹配」。如果你使用的是SQL 2008,那麼我建議看看新的MERGE操作(http://technet.microsoft.com/en-us/library/bb510625.aspx)。你可以把它放在一個存儲過程中,並使用L2S映射到存儲過程。 – 2010-10-02 03:44:50