我有一个包含排队元素的表,用于与另一个系统的同步问题
TableName | PrimaryKey | Action
--------------------------------
Products 15 Delete
Products 21 Create
Categories 9 Update
TableName :目标SQL表的名称
PrimaryKey :相应表格中目标元素的PK值
操作:要执行的操作(示例:如果创建 - >推送创建远程系统中本地表产品的ID号为21的元素)
我需要的是一种在C#中正确处理此问题的方法。我正在考虑使用命令模式。 (ASP.Net MVC4 / C#)
您对此类问题有任何指导吗?
答案 0 :(得分:1)
您可以使用that article中的建议和服务器端的进程队列。然后你的代码看起来像
create table TQueue (TableName nvarchar(128), PrimaryKey int, Action nvarchar(128))
create procedure sp_TQueue_Pop
as
begin
declare @TableName nvarchar(128), @PrimaryKey int, @Action nvarchar(128)
declare @temp_pop table (TableName nvarchar(128), PrimaryKey int, Action nvarchar(128))
begin transaction
select @TableName = null, @PrimaryKey = null, @Action = null
delete top (1)
from TQueue with (rowlock, readpast)
output deleted.* into @temp_pop
select @TableName = TableName, @PrimaryKey = PrimaryKey, @Action = Action
from @temp_pop
--================================================
-- do your processing here
--================================================
select @TableName, @PrimaryKey, @Action
end
出列你刚刚执行的程序。
希望有所帮助。