2011-05-18 60 views
1

我正在使用IBM DB2,並且沒有GUID(uniqueidentifier)數據類型。相反,二進制文件存在字符。當我從該數據庫創建實體數據庫模型時,該類型在模型中標識爲byte []。當我直接使用模型與數據庫 - 一切正常(接受Guid.NewGuid().ToByteArray()作爲主鍵/實體鍵),但我必須使用服務層。所以我選擇了圖層的WCF數據服務模型,並在那裏添加了相同的數據庫模型。嘗試添加服務引用後,我不斷收到錯誤:
自定義工具「DataServiceClientGenerator」失敗。數據服務客戶端代碼生成失敗:指定的模式無效。錯誤: (0,0):錯誤0129:EntityType'Model.TEST'中的屬性'ID'無效。目前不支持類型爲'Binary'的EntityKey屬性。WCF數據服務二進制類型作爲實體密鑰

這是否意味着我無法使用二進制表作爲PK?

PS順便說一下DB2中的數據類型:你建議我在db2中使用什麼來允許在不同數據庫服務器之間簡單地將數據從一個表複製到另一個表?

回答

1

DB2允許將較小列中的二進制數據作爲唯一鍵,但必須將唯一ID作爲INSERT語句的一部分或從觸發器中分配。 FOR BIT DATA限定符在CREATE TABLE語句中用於告訴DB2您已定義的CHAR或VARCHAR列將存儲二進制值。

DB2的內部唯一函數稱爲GENERATE_UNIQUE(),它返回CHAR(13)FOR BIT DATA值,該值在數據庫中保證是唯一的(在單分區DB2服務器和InfoSphere Warehouse集羣DB2數據庫中) 。如果要存儲來自DBMS外層的較大GUID,則應該能夠將它們存儲在CHAR/VARCHAR FOR BIT DATA COLUMN中。

相關問題