Dynamics CRM 2011自定义实体:创建与我的SQL Server外键和主键关系匹配的模型

时间:2012-10-17 11:44:02

标签: sql dynamics-crm-2011

我有一个很好的SQL Server数据库设置,有2个表,有一对多的关系。像这样:

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和关系字段。我希望保持表格关系的完整性,特别是由于我将定期通过脚本导入大量数据(1百万+记录),而不是通过crm gui创建记录和关系。感谢。

2 个答案:

答案 0 :(得分:4)

在同样的情况下,我创建了两个带有附加字段的实体 - 整数ID。关系是CRM的默认关系。如果您想在“宠物”表单上“保留”“类型”实体的ID,您可以在“宠物”表单上添加其他隐藏字段(整数 - 类型ID)。并在类型更改上更新。

如果您只在脚本中使用这些实体,我认为不需要这个隐藏的Type_ID。也许查询性能不理想,但这可行:)

编辑:还有一件事,如果你需要在CRM中生成ID,你必须创建用于生成唯一ID的插件,并且将在实体创建时执行。

希望有所帮助

答案 1 :(得分:2)

由于CRM将其PK存储为GUID,因此您只能通过这些GUID定义FK。

正如拉撒路所述,创建包含ExternalID int字段的Pets和PetTypes实体。

您的导入脚本需要为每个要导入的记录查找两个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