作为实体键的 WCF 数据服务二进制类型

本文关键字:数据 服务 二进制 类型 WCF 实体 | 更新日期: 2023-09-27 17:56:53

我正在使用 IBM DB2,那里没有 GUID(uniqueidentifier) 数据类型。取而代之的是二进制的字符。当我从该数据库创建实体数据库模型时,该类型在模型中标识为 byte[]。当我直接将模型与数据库一起使用时,一切正常(接受Guid.NewGuid().ToByteArray()作为主键/实体键),但我必须使用服务层。因此,我为该层选择了 WCF 数据服务模型,并在那里添加了相同的数据库模型。尝试添加服务引用后,我不断收到错误:
自定义工具"数据服务客户端生成器"失败。 数据服务客户端代码生成失败:指定的架构无效。错误:(0,0):错误 0129:实体类型"模型.TEST"中的属性"ID"无效。当前不支持类型为"二进制"的实体键属性。

这是否意味着我无法使用带有二进制的表作为 PK?

便说一下 DB2 中的数据类型:您建议我在 DB2 中使用什么来允许在不同数据库服务器之间轻松地将数据从一个表复制到另一个表?

作为实体键的 WCF 数据服务二进制类型

DB2 允许在较小的列中使用二进制数据,这些列也可以用作唯一键,但您必须将唯一 ID 作为 INSERT 语句的一部分或从触发器分配。CREATE TABLE 语句中使用 FOR 位数据限定符来告诉 DB2,您定义的 CHAR 或 VARCHAR 列将存储二进制值。

DB2 的内部唯一函数称为 GENERATE_UNIQUE(),它返回一个 CHAR(13) for bit data 值,该值保证在数据库中是唯一的(在单分区 DB2 服务器和 InfoSphere Warehouse 集群 DB2 数据库上)。如果要存储来自 DBMS 外部层的较大 GUID,则应能够将它们存储在位数据的 CHAR/VARCHAR 列中。