Microsoft CRM高级开发人员扩展程序让我对早期绑定对CRM的Web服务的调用感到有些不满。
我正在写一个插件,我想访问前映像中定义的属性。所有示例都将preimage转换为Microsoft.Xrm.Sdk.Entity,它使用后期绑定来访问它的属性。我不喜欢将属性名称的所有字符串硬编码到我的插件中,并希望找到一种通过使用早期绑定来避免它的方法。
以下是演员
的示例var preMessageImage = (Microsoft.Xrm.Sdk.Entity)context.PreEntityImages["MyPreImage"];
但我必须使用后期绑定来访问属性
var myProperty = preMessageImate.Properties["MyProperty"];
有没有办法将这个preimage转换为xrm对象,该对象具有使用早期绑定定义的所有属性,因此我不必对所有属性名称进行硬编码?
答案 0 :(得分:7)
首先应该使用SDK中的crmsvcutil工具生成“早期绑定”的Xrm实体,并在插件代码库中包含该代码文件。
我建议省略'DataContextName'命令行arg,这样就不会生成上下文。
有关详细信息,请参阅MSDN:CrmSvcUtil on MSDN
接下来,您应该使用Entity类上的ToEntity<T>
方法来获取强类型的特定实体。更多信息:ToEntity on MSDN