-1

我发现这个片段提供了一个名为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

    };
}
4

2 回答 2

2

首先,您必须生成早期绑定的实体类。检查这篇文章。然后,在代码中插入 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 获取联系人。在此处查找示例。对于注释创建使用:

Guid annotationId = service.Create(annotation);
于 2012-10-30T15:32:52.637 回答
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]:是您的组织服务 url,您可以从设置/自定义/开发人员 rosources/组织服务中找到它,例如

https://msdtraders.api.crm.dynamics.com/XRMServices/2011/Organization.svc
[yourusername]:您的用户名
[yourpass]:您的密码

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

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

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

于 2014-01-24T06:51:12.167 回答