-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();
      }

ここに 1 つのエラーがあります。annotation.CreatedByフィールドは読み取り専用であり、コードからこれに値を設定することはできません。

遅延バインディングを使用する場合、XrmServiceContextは必要ありません。QueryExpression を使用して、CRM から Contact を取得できます。ここで例を見つけてください。注釈の作成には、次を使用します。

Guid annotationId = service.Create(annotation);
于 2012-10-30T15:32:52.637 に答える
0

SDK/bin/CrmSvcUtil.exe では、このツールを使用して、コマンド プロンプトから事前にバインドされたエンティティ クラスを生成し、パラメータを指定して CrmSvcUtil.exe を実行します。

SDK ビンの場所が「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 です。設定/カスタマイズ/開発者リソース/組織サービスから見つけることができます。

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 に答える