2011-01-26 82 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漫步)。有很多方法可以解决这个问题,主要围绕某种到期机制进行。