在这种情况下,有多个行具有相同的设备 GUID,因为多个用户可能在设备上使用相同的应用程序(但不能同时使用......除非他们非常接近)。此查询的作用是获取共享相同设备 GUID 的所有行,然后如果 UserId 匹配 (3012),则将 InUse 位设置为 true (1)。该集合中具有不同用户 ID 的任何行都将其 InUse 位设置为 false (0)。这避免了对服务器进行多次调用。
UPDATE Devices
SET InUse = (CASE UserId WHEN 3012
THEN 1 ELSE 0 END)
WHERE DevGuid = '94F74150-26B0-4396-982C-675A14A66FAD';
如果有办法使用 ServiceStack/Ormlite 做到这一点,由于 IOC 的优势,我更愿意走那条路。但其他考虑因素包括尽可能少地调用服务器。此外,使用 ADO.NET 成为“老派”使我能够最流畅地使用 SQL Server Geography 和 Geometry 类型。(由于现实世界的限制,我已经是微软 Azure 移动服务的难民)。