2012-10-17 45 views
3

我有一個很好的SQL Server數據庫設置,其中包含兩個具有一對多關係的表。事情是這樣的:Dynamics CRM 2011自定義實體:創建與我的SQL Server外鍵和主鍵關係相匹配的模型

TYPE:

ID Type 
=========== 
1 mammal  
2 fish  
3 insect 

PETS:

ID Name Foreign Key 
======================= 
1 Paris 1 (mammal)  
2 Michael 2 (fish)  
3 Mardy 1 (mammal) 

如何在地球上我重建這CRM?我知道CRM喜歡創建自己的主鍵GUID和相關領域。我希望保持表格關係的完整性,特別是由於我將通過腳本定期導入大量數據(100萬條記錄),而不是通過crm gui創建記錄和關係。謝謝。

回答

2

由於CRM存儲它的PK作爲GUID的你只能只能通過那些GUID的定義FKS。

正如lazarus所說,創建Pets和PetTypes實體包括一個ExternalID int字段。

你導入腳本需要查找的GUID都對於要導入的每個記錄:

read record 
lookup PetTypes Guid for PetTypes.ExternalID = [pettype.id from record] 
create if not exists 
lookup Pets Guid for Pets.ExternalID = [id from record] 
create if not exists 
set Pets.PetTypes = new EntityReference() with PetTypes.ID (=guid) 
save crm record 
+0

謝謝devio和拉撒路。基於你說什麼,我想知道是否將數據作爲外部數據源查詢是前進的方式,特別是因爲數據是靜態的,並且不會有任何關聯的註釋/活動等...... – mechalaris

+0

基於我有另一種模型實體CRM已經叫 ** **神神 創建不同的寵物,所以我想我可以參考 ** **寵物** 類型**執行「高級查找」或運行報告時 表作爲外部數據源... – mechalaris

4

在同樣的情況下,我創建了兩個實體,其他字段 - 整數ID。關係是CRM默認的一個。如果您想在'寵物'表單上'保留''類型'實體的ID,您可以在寵物表單上添加額外的隱藏字段(整型--Type_ID)。並更新此類型更改。

我認爲這個隱藏的Type_ID是不必要的,如果你只使用腳本中的這些實體。也許查詢性能不理想,但這個工作:)

編輯:另外一件事,如果你需要在CRM中生成ID,你必須創建插件來生成唯一的ID,並將在實體創建。

希望它可以幫助

+0

這是答案,但devio的更加全面。謝謝拉撒路。 – mechalaris