我在哪里可以找到XrmServiceContext类?

时间:2012-10-30 14:27:23

标签: dynamics-crm dynamics-crm-2011

我发现这个代码段提供了一个名为annotation的新实体的创建。 我找不到在XrmServicesContext指令中声明的类using。 有谁知道这到底是什么?

private static void AddNoteToContact(IOrganizationService service, Guid id)
{
    Entity annotation = new Entity();
    annotation.LogicalName = "annotation";
    using (var crm = new XrmServicesContext(service))
    {
        var contact = crm.ContactSet.Where(c => c.ContactId == id).First();

        Debug.Write(contact.FirstName);

        annotation["createdby"] = new EntityReference("systemuser", new Guid("2a213502-db00-e111-b263-001ec928e97f"));
        annotation["objectid"] = contact.ToEntityReference();
        annotation["subject"] = "Creato con il plu-in";
        annotation["notetext"] = "Questa note è stata creata con l'esempio del plug-in";
        annotation["ObjectTypeCode"] = contact.LogicalName;
        try
        {
            Guid annotationId = service.Create(annotation);

            crm.AddObject(annotation);
            crm.SaveChanges();
        }
        catch (Exception e)
        {
            throw new Exception(e.Message);
        }

        //    var note = new Annotation{

        //Subject ="Creato con il plu-in",

        //NoteText ="Questa note è stata creata con l'esempio del plug-in",

        //ObjectId = contact.ToEntityReference(),

        //ObjectTypeCode = contact.LogicalName

    };
}

2 个答案:

答案 0 :(得分:2)

首先,您必须生成早期绑定的实体类。 Check this article。然后,在代码中插入using语句。

在您的示例中,您正在使用早期和晚期绑定的组合。我建议你选择其中一个。在早期绑定的情况下,在生成早期绑定类之后,您可以修改代码,如:

Annotation annotation = new Annotation();
      using (var crm = new XrmServiceContext(service))
      {
        annotation.ObjectId = contact.ToEntityReference();
        annotation.Subject = "Creato con il plu-in";
        annotation.NoteText = "Questa note e stata creata con l'esempio del plug-in";
        annotation.ObjectTypeCode = Contact.LogicalName;

        crm.AddObject(annotation);
        crm.SaveChanges();
      }

此处有一个错误, annotation.CreatedBy 字段是只读的,您无法通过代码为此设置值。

如果你要使用后期绑定,则不需要 XrmServiceContext 。您可以使用QueryExpression从CRM获取联系人。查找examples here。对于注释创建使用:

Guid annotationId = service.Create(annotation);

答案 1 :(得分:0)

在SDK / bin / CrmSvcUtil.exe中,此工具用于生成早期绑定的实体类 在命令提示符下,运行带参数的CrmSvcUtil.exe,即

如果您的sdk bin位置是“D:\ Data \ sdk2013 \ SDK \ Bin \ CrmSvcUtil.exe”,那么您的命令将是这样的,
CMD:

D:\Data\sdk 2013\SDK\Bin>CrmSvcUtil.exe  /out:Xrm\Xrm.cs /url:[OrganizationServiceUrl]  /username:[yourusername] /password:[yourpass] /namespace:Xrm /serviceContextName:XrmServiceContext

[OrganizationServiceUrl]:是您的组织服务网址,您可以通过设置/自定义/开发人员资源/组织服务找到它,例如

https://msdtraders.api.crm.dynamics.com/XRMServices/2011/Organization.svc
[您的用户名]:您的用户名
[你的通行证]:你的密码

这将在bin / Xrm / Xrm.cs中生成名为Xrm.cs的文件和实体类。在bin中创建文件夹Xrm(如果不存在),或在cmd [out:Xrm \ Xrm.cs]中编辑参数。
在项目中添加Xrm.cs

在您使用XrmServicesContext的代码中添加using语句 比如using Xrm;

现在您可以使用/访问XrmServicesContext和所有实体......享受。