在迁移到CRM 2011时,我们发现不同的开发人员使用了自定义实体和自定义字段的不同大小写。这使用早期绑定方法为自定义编程带来了麻烦。 http://msdn.microsoft.com/en-us/library/gg327844.aspx。有没有办法在迁移之前(或之后)规范化实体/字段名称?
答案 0 :(得分:2)
据我所知。实现所需正确大写的唯一方法是使用适当的名称重新创建实体。
迁移之前或之后主要是升级CRM服务器安装并修改数据库架构以反映升级,同时仍保留当前数据和自定义数据。
就“支持”的间谍而言。就此而言。
至于实际的解决方法。如果您仍然希望升级,我很想将您当前的CRM 4系统恢复到测试域。然后看看在实际的“不可触及”的crm数据库中更改模式名称是多么可行。我相信有一个MetaDataSchema.Entity表,这是集中存储的,所以我测试这个,看看它有多可用,以及它对webservice有什么影响。
因此,在使用Dynamics CRM时,您面临着多次面对的类似选择。采用支持的方式,或者一点“Yee-Ha”开发。对不起,这可能不是你想听到的!
修改强>
关于要改变什么,我不能肯定地说,因为我还没有CRM 4.0系统在这个时刻只交出2011。但是作为示例,[OrganisationName_MSCRM]数据库中将有一个MetadataSchema.Entity表。其中某些列会跳出来。名称,物理名称和逻辑名称。
逻辑名称是CRM用户无论您如何输入它都默认为小写的名称。
我相信物理名称和名称是您希望改为小写的名称。
实体的实际“名称”,例如逻辑名称是“account”,而在CRM中以用户友好的方式显示它通过名为MetadataSchema.LocalizedLabel的表通过外键“ObjectId”相关联case将是“EntityId”字段。
这是我希望进行更改的地方,因为它不会对其余数据产生影响,因为“logicalname”字段是CRM可能使用的字段。
就你的强类型课程而言。
如果您使用后期绑定,例如
relatedEntity.LogicalName = "new_related_account";
relatedEntity["relatedaccountid"] = entity["accountid"];
然后所有属性和逻辑名称都需要小写。因为这将使用先前在MetadataSchema表中标识的“logicalname”属性。
如果使用SVCUtil我只能假设它查看“名称”和“物理名称”属性,以便在生成用于自定义应用程序的文件时提供稍微用户友好的编码体验。
虽然如果你想使用早期绑定类生成它应该不是一个问题,因为生成的定义文件将提供关于属性和属性的正确大写的智能感知,并且如果你使用后期绑定,就像之前的例子一样这都是小写的。所以它看起来有点不整洁而不是完全不切实际的=)