2011-01-26 83 views
0

我有一個Windows服務,刪除錶行。我不希望它刪除行,如果行加載(做一些opertion)由我的wcf服務。似乎我應該放置一些鎖定機制,但我無法找到如何做到這一點。在這方面的任何幫助?LINQ到SQL併發問題!

謝謝 賈馬爾。

回答

0

你不應該持有長期的數據庫鎖定。使用某種標記技術,例如將帶有外鍵的每個加載行的id表返回到原始表。這將防止刪除,直到WCF服務刪除輔助表中的條目。通過在DELETE語句中附加WHERE NOT EXISTS (SELECT * FROM loaded_rows WHERE id = outer.id),它還可以安全刪除。

該模型甚至允許多個「加載器」,在輔助表中添加一個「loader_id」列。

建議的方法的主要問題是WCF服務必須刪除與它們完成的行。如果由於錯誤或崩潰而忽略這些行,這些行將被永久鎖定(或至少直到DBA漫步)。有很多方法可以解決這個問題,主要圍繞某種到期機制進行。