Dynamics CRM如何带来实体记录的当前Id

时间:2016-06-29 14:05:05

标签: c# dynamics-crm-2011 dynamics-crm dynamic-programming

我是社区中的新手,我正在使用表单的插件,我需要获取该表单的所有值,为了实现这一点,我创建了一个preOperation Update Plugin。只有当我修改该表单中的字段时,我的插件才能完美运行。但是,普通用户(我是管理员)无法修改表单的任何值。 我读到我可以使用方法

service.Retrieve(string entityName, Guid id, ColumnSet columnSet);

我的问题是如何获取当前记录的Guid id? 对不起,如果它显而易见,但我是Dynamics CRM的新手,我感谢你能给我的任何帮助。

2 个答案:

答案 0 :(得分:3)

由于您的插件是在操作前级别注册的,因此该记录尚未写入数据库。

您必须使用已注册的前实体图像来访问属性(表单值)。

var pluginExecutionContext = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
var entity = pluginExecutionContext.PreEntityImages["ImageName"]; //the name that you have registered your image with
//iterate through all the attributes 
foreach (var attribute in entity.Attributes)
{
  //access the attribute values
  var attributeValue = attribute.Value;  
}

答案 1 :(得分:3)

如果您不想使用实体的前/后图像,您可以检索问题中提到的记录。如果您的插件在更新消息上注册,则很容易获取当前记录的ID。

Entity entity = (Entity)context.InputParameters["Target"];
Guid recordID = entity.Id;

另外看看这个。

https://community.dynamics.com/crm/b/crminogic/archive/2010/07/26/pre-image-38-post-image-explained-33