所以我有一个第三方应用程序,我必须与之接口,此应用程序需要来自我的users表的userID。问题是我将我的userID存储为GUID,第三方应用程序只接受整数。所以我想,如果有一种方法可以将GUID转换为整数然后能够将其转换回来(因为我从他们的服务器获得有关userID的通信),那么我不必重新编码太多。任何想法?
答案 0 :(得分:8)
整数使用32位,而GUID是128位 - 因此,没有办法将GUID转换为整数而不会丢失信息,因此无法将其转换回来。
编辑:你可以将GUID存储到GUID表中,在表中为每个表分配一个唯一的整数ID。这样,您可以在给定整数ID的情况下获取GUID。
答案 1 :(得分:8)
您需要一个商店从您的指南到第三方整数的映射:现有用户表中的新“int third Party Id”字段或新表。
答案 2 :(得分:4)
您需要一个128位整数类型来保存GUID的等价物。您可以使用Guid的ToByteArray()方法来获取字节和接受字节数组的构造函数来恢复Guid。
您也可以使用GetHashCode()方法获取整数,但是两个不同的GUID可能具有相同的哈希码,因为有更多可能的Guids而不是32位整数。
答案 3 :(得分:2)
比整数大得多的Guid,不能整数。
答案 4 :(得分:0)
添加整数标识列,它基本上是第二个ID列,并将该columnID提供给应用程序。
答案 5 :(得分:0)
创建一个包含两列的新表(MyUserMappings)
1)ThirdPartyUserID(INT,NOT NULL,IDENTITY(1,1))
2)MyUserID(GUID,NOTNULL)
通过执行
将所有GUID从您的UserID插入此表INSERT INTO MyUserMappings(MyUserID) 从MyUsers中选择MyGUIDUserID
每次MyUsers表获取新行时,您还需要在MyUsers Table上设置一个触发器,以在MyUsersMappings表中插入一个新行。
现在创建一个视图,显示MyUsermappingsTable中MyUsers Table和ThirdParty UserID字段中的所有字段。
现在,您不需要对现有应用程序进行任何DAL更改,并且原始表格不受影响。因此,您现有的应用程序将保持不变。并且您的新代码可以查询视图而不是表来返回整数ID和所有其他用户信息。
干杯。