แชร์ผ่าน


เปิดใช้งานตารางเสมือนเพื่อสนับสนุนเหตุการณ์ Dataverse

คุณสามารถอนุญาตให้เอนทิตีเสมือนเข้าร่วมในเหตุการณ์ไปป์ไลน์ Event Framework แบบอะซิงโครนัสและในตัวเชื่อมต่อ Dataverse ของ PowerAutomate เมื่อมีการเพิ่ม แถว แก้ไข หรือลบ ทริกเกอร์ เปิดใช้งานความสามารถนี้เป็นส่วนหนึ่งของเหตุการณ์ทางธุรกิจ Dataverse ข้อมูลเพิ่มเติม: เหตุการณ์ทางธุรกิจของ Microsoft Dataverse

หากไม่มีการกําหนดค่าที่อธิบายไว้ในบทความนี้ เอนทิตีเสมือนส่วนใหญ่ไม่ได้เข้าร่วมในไปป์ไลน์ Event Framework เช่นเอนทิตีอื่น เนื่องจากเอนทิตีเสมือนไม่ได้เข้าร่วมในไปป์ไลน์เหตุการณ์ คุณไม่สามารถลงทะเบียนขั้นตอนปลั๊กอินกับเหตุการณ์สร้าง อัปเดต และลบ (CUD) ที่เกิดขึ้น และแม้ว่าเหตุการณ์ CUD จะปรากฏสําหรับเอนทิตีเหล่านี้ในตัวเชื่อมต่อข้อมูล Power Automate แต่ข้อผิดพลาดจะเกิดขึ้นเมื่อผู้คนพยายามบันทึกโฟลว์ที่ใช้

ทั้งนี้เนื่องจากเอนทิตีเสมือนแสดงข้อมูลที่จัดเก็บไว้ในแหล่งข้อมูลภายนอก Dataverse มีสิทธิ์เข้าถึงแหล่งข้อมูลนั้นในฐานะไคลเอ็นต์ แต่ระบบอื่นสามารถอัปเดตข้อมูลนั้นได้ตลอดเวลาโดยไม่ต้องผ่านเฟรมเวิร์กเหตุการณ์ Dataverse

มีสองขั้นตอนในการเปิดใช้งานดังนี้:

  1. การกําหนดค่าข้อมูลในตารางที่เรียกว่า เมตาดาต้าของเอนทิตีเสมือน เมื่อมีการกําหนดค่าข้อมูลในตารางนี้ให้เปิดใช้งาน ชุด API ใหม่แสดงวิธีสําหรับระบบภายนอกเพื่อแจ้ง Dataverse เมื่อมีเหตุการณ์ CUD เกิดขึ้น

    เมื่อมีแถวเมตาดาต้าของเอนทิตีเสมือนที่เชื่อมโยงกับ เมตาดาต้าของเอนทิตี้เมตาดาต้าสําหรับ ตารางเสมือน การตั้งค่าสามรายการต่อไปนี้สามารถควบคุมได้ว่าแหล่งข้อมูลภายนอกสามารถแจ้งเตือนตารางเสมือนของคุณได้หรือไม่

    เมื่อเปิดใช้งานทีละรายการโดยใช้เมตาดาต้าIsOnExternalCreatedEnabledIsOnExternalDeletedEnabledของเอนทิตีเสมือน และIsOnExternalUpdatedEnabledคุณสมบัติบูลีน การดําเนินการที่ผูกไว้ต่อไปนี้จะพร้อมใช้งานสําหรับการเรียกโดยบริการภายนอก

    การดําเนินการ/ข้อความ คำอธิบาย
    OnExternalCreated ประกอบด้วยข้อมูลเกี่ยวกับเรกคอร์ดหนึ่งที่สร้างขึ้นในระบบภายนอกที่เชื่อมต่อซึ่งแสดงเป็นตารางเสมือนใน Dataverse
    OnExternalUpdated ประกอบด้วยข้อมูลเกี่ยวกับเรกคอร์ดที่มีการอัปเดตในระบบภายนอกที่นำเสนอเป็นตารางเสมือนใน Dataverse
    OnExternalDeleted ประกอบด้วยข้อมูลเกี่ยวกับเรกคอร์ดที่ถูกลบในระบบภายนอกซึ่งแสดงเป็นตารางเสมือนใน Dataverse
  2. ระบบภายนอกที่ควบคุมข้อมูลต้องส่งคำขอ HTTP ที่รับรองความถูกต้องไปยัง Dataverse โดยใช้ API ที่มีข้อมูลใน Virtual Entity Metadata โดยทั่วไปบัญชีบริการหลักที่ได้รับการรับรองความถูกต้องจะดําเนินการเรียกใช้นี้ ข้อมูลเพิ่มเติม: สร้างแอปพลิเคชันเว็บที่ใช้การรับรองความถูกต้องแบบเซิร์ฟเวอร์ถึงเซิร์ฟเวอร์ (S2S)

    แต่แอปพลิเคชันหรือผู้ใช้ใด ๆ ที่สามารถทําการเรียกใช้ไปยัง Dataverse สามารถส่งคําขอ http ที่จําเป็นเพื่อแจ้งให้ Dataverse ที่เหตุการณ์เกิดขึ้น

Note

เอนทิตีเสมือนที่ใช้ตัวให้บริการ OData และแหล่งข้อมูลวันที่ที่ไม่ใช่เชิงสัมพันธ์อาจอนุญาตให้ลงทะเบียนขั้นตอนปลั๊กอินบางอย่างตัวอย่างเช่นเฉพาะในเหตุการณ์ภายนอกธุรกรรม แต่เหตุการณ์เหล่านี้จะไม่พร้อมใช้งานสําหรับใช้กับตัวเชื่อมต่อ Dataverse ของ Power Automate ไม่มีการเปลี่ยนแปลงลักษณะการทํางานนี้ แต่สําหรับการแจ้งเตือนเหตุการณ์ที่เชื่อถือได้มากขึ้น ขอแนะนําให้ใช้วิธีการที่อธิบายไว้ในหัวข้อนี้

วิธีเปิดใช้งานการแจ้งเตือน API สําหรับตารางเสมือน

คุณสามารถเปิดใช้งานการแจ้งเตือน API ได้โดยการกําหนดค่าด้วยตนเองในพอร์ทัลผู้สร้าง (make.powerapps.com/) หรือใช้รหัส

เปิดใช้งานด้วยตนเองโดยใช้พอร์ทัลผู้สร้าง

สมมติว่าเรามีตารางเสมือนบุคคลที่มีคุณสมบัติเหล่านี้ คุณสมบัติชื่อคือnew_People

คุณสมบัติของตารางเสมือน new_people

  1. ใน Power Apps (make.powerapps.com) ภายในโซลูชันของคุณ เลือก+ใหม่แล้วเลือกเมตาดาต้าเอนทิตีเสมือน

    เพิ่มเมตาดาต้าเสมือนใหม่ลงในโซลูชันของคุณ

    ซึ่งจะเปิดฟอร์มต่อไปนี้:

    ฟอร์มเมตาดาต้า virtualentity

  2. กรอกแบบฟอร์ม ตั้งค่า ส่วนขยายเอนทิตี Id เป็นชื่อของตารางเสมือนของคุณ คุณไม่จําเป็นต้องเปิดใช้งานทั้งสามข้อความ คุณสามารถตั้งค่าอย่างน้อยหนึ่งตัวและกลับมาเพื่อเปิดใช้งานส่วนที่เหลือในภายหลัง

เมื่อคุณเปิดใช้งานข้อความเหล่านี้ คุณสามารถสังเกตและยืนยันว่ามีอะไรเพิ่มเข้ามาโดยใช้ขั้นตอนในมุมมองข้อความที่สร้างขึ้นเพื่อสนับสนุนตารางเสมือนของคุณ

ตั้งค่าคุณสมบัติที่มีการจัดการโดยใช้พอร์ทัลผู้สร้าง

หากคุณไม่ต้องการให้ผู้ที่ติดตั้งโซลูชันที่มีการจัดการของคุณเปลี่ยนลักษณะการทํางานของเมตาดาต้าเอนทิตีเสมือน คุณควรตั้งค่าคุณสมบัติที่มีการจัดการเพื่อป้องกันไม่ให้ใช้ขั้นตอนต่อไปนี้

  1. ในโซลูชันของคุณ เลือกเมตาดาต้าของเอนทิตีเสมือนและเลือกจุดไข่ปลา (...) แล้วเลือกคุณสมบัติที่มีการจัดการ

    นําทางไปยัง คุณสมบัติที่มีการจัดการ

  2. ในบานหน้าต่าง คุณสมบัติที่มีการจัดการ ให้ยกเลิกการเลือก อนุญาตให้กําหนดค่าเอง และกด เสร็จสิ้น

    ยกเลิกการเลือกอนุญาตให้กําหนดค่าเอง

    การตั้งค่านี้จะไม่ทําสิ่งใดจนกว่าเรกคอร์ดเมตาดาต้าของเอนทิตีเสมือนจะรวมอยู่ในโซลูชันที่มีการจัดการ

เปิดใช้งานด้วยรหัส

คุณอาจต้องการสร้างเมตาดาต้าเอนทิตีเสมือนสําหรับเอนทิตีเสมือนของคุณโดยอัตโนมัติ

ตาราง VirtualEntityMetadata มีคอลัมน์ต่อไปนี้ที่คุณสามารถตั้งค่า:

ชื่อ Schema
ชื่อตรรกะ
ชื่อที่ใช้แสดง ประเภท คำอธิบาย
ExtensionOfRecordId
extensionofrecordid
เอนทิตีเสมือน การค้นหา ชื่อของเอนทิตีเสมือนที่มีการตั้งค่าเหล่านี้
IsCustomizable
iscustomiable
กำหนดเองได้ ManagedProperty ควบคุมว่าสามารถเปลี่ยนหรือลบเมตาดาต้าของเอนทิตีเสมือนเมื่อรวมอยู่ในโซลูชันที่มีการจัดการหรือไม่
IsOnExternalCreatedEnabled
isonexternalcreatedenabled
เปิดใช้งานข้อความสร้างภายนอก แบบบูลีน เปิดใช้งานข้อความเพื่อส่งข้อมูลเกี่ยวกับเรกคอร์ดใหม่ที่สร้างขึ้นในแหล่งข้อมูลภายนอก
IsOnExternalDeletedEnabled
isonexternaldeletedenabled
เปิดใช้งานการลบข้อความจากระบบภายนอก แบบบูลีน เปิดใช้งานข้อความเพื่อส่งข้อมูลเกี่ยวกับระเบียนที่ถูกลบในแหล่งข้อมูลภายนอก
IsOnExternalUpdatedEnabled
isonexternalupdatedenabled
เปิดใช้งานข้อความอัปเดตภายนอก แบบบูลีน เปิดใช้งานข้อความเพื่อส่งข้อมูลเกี่ยวกับระเบียนที่ปรับปรุงแล้วในแหล่งข้อมูลภายนอก
Name
name
ชื่อ สตริง ชื่อของการตั้งค่า
VirtualEntityMetadataId
virtualentitymetadataid
VirtualEntityMetadata Uniqueidentifier รหัสเฉพาะของอินสแตนซ์เอนทิตี

เมื่อสร้างคอมโพเนนต์ของโซลูชันชนิดเหล่านี้ เราขอแนะนําให้คุณตั้งค่าคุณสมบัติ การจัดการ IsCustomizable ให้เป็น false เว้นแต่ว่าคุณต้องการอนุญาตให้ผู้ที่ติดตั้งโซลูชันที่มีการจัดการของคุณสามารถเปลี่ยนแปลงการตั้งค่าเหล่านี้ได้

นอกจากนี้เราขอแนะนําให้คุณเพิ่มเรกคอร์ดเมตาดาต้าของเอนทิตีเสมือน** ไปยังโซลูชันเฉพาะเมื่อคุณสร้าง ในตัวอย่างทั้งสองด้านล่าง คุณจะเห็นว่า Solution.UniqueName ถูกส่งผ่านโดยใช้คำขอที่สร้างเรกคอร์ด

การใช้ API เว็บ

เมื่อคุณใช้ API เว็บ งานแรกคือการรับ MetadataId ของตารางเสมือน ตัวอย่างต่อไปนี้จะส่งกลับ MetadataId สำหรับเอนทิตีเสมือนที่มีชื่อ new_people

ขอร้อง:

GET [Organization Uri]/api/data/v9.1/EntityDefinitions(LogicalName='new_people')?$select=MetadataId HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
Accept: application/json
Authorization: Bearer [REDACTED]

การตอบสนอง :

HTTP/1.1 200 OK

{
    "@odata.context": "[Organization Uri]/api/data/v9.1/$metadata#EntityDefinitions(MetadataId)/$entity",
    "MetadataId": "b198e6f3-3dd6-4c0b-9570-702f0c10d577"
}

จากนั้นให้สร้างเรกคอร์ดเมตาดาต้าของเอนทิตีเสมือนในขณะที่เชื่อมโยงเข้ากับ Entity ชนิดเอนทิตีโดยใช้ การ MetadataId เรียกใช้ในขั้นตอนแรก

โปรดสังเกตการใช้ส่วนหัว MSCRM.SolutionUniqueName ที่ตั้งค่าให้มีค่าเท่ากับ Solution.UniqueName ซึ่งจะเพิ่มเรกคอร์ดเมตาดาต้าของเอนทิตีเสมือนไปยังโซลูชันเมื่อสร้างขึ้น ข้อมูลเพิ่มเติม: ส่วนหัว HTTP

ขอร้อง:

POST [Organization Uri]/api/data/v9.1/virtualentitymetadatas HTTP/1.1
MSCRM.SolutionUniqueName: YourSolutionUniqueName
OData-MaxVersion: 4.0
OData-Version: 4.0
Accept: application/json
Authorization: Bearer [REDACTED]
Content-Type: application/json; charset=utf-8

{
  "@odata.type": "Microsoft.Dynamics.CRM.virtualentitymetadata",
  "name": "Person Virtual Metadata",
  "iscustomizable": {
    "@odata.type": "Microsoft.Dynamics.CRM.BooleanManagedProperty",
    "Value": false,
    "CanBeChanged": false
  },
  "isonexternalcreatedenabled": true,
  "isonexternaldeletedenabled": true,
  "isonexternalupdatedenabled": true,
  "extensionofrecordid@odata.bind": "entities(b198e6f3-3dd6-4c0b-9570-702f0c10d577)"
}

การตอบสนอง :

HTTP/1.1 204 No Content

การใช้ SDK สําหรับ .NET

ไม่ว่าคุณจะใช้ประเภทที่ถูกผูกพันก่อนหรือหลัง งานแรกคือการดึงข้อมูล MetadataId ของตาราง ซึ่งจะถูกดึงในลักษณะเดียวกันสำหรับทั้งสองประเภท ในกรณีนี้สําหรับตารางเสมือนที่new_peopleชื่อว่าโดยใช้ CrmServiceClient หรือสามารถใช้คลาส ServiceClient ได้

var service = new CrmServiceClient(conn);
// var service = new ServiceClient(conn);

var retrieveEntityRequest = new RetrieveEntityRequest
{
    LogicalName = "new_people",
    EntityFilters = EntityFilters.Entity
};

var retrieveEntityResponse = (RetrieveEntityResponse)service.Execute(retrieveEntityRequest);

var entityId = retrieveEntityResponse.EntityMetadata.MetadataId;

การใช้ชนิดที่กำหนดล่วงหน้า

ด้วยประเภท early-bound คุณสามารถใช้VirtualEntityMetadataคลาสที่สร้างขึ้นโดยใช้คําสั่งการสร้างแบบจําลอง Pac ของ Power Platform CLI ข้อมูลเพิ่มเติม: การเขียนโปรแกรม Late-bound และ Early-bound โดยใช้ SDK สําหรับ .NET

var virtualEntityMetadata = new VirtualEntityMetadata
{
    Name = "Person Virtual Metadata",
    ExtensionOfRecordId = new EntityReference("entity", entityId.Value),
    IsCustomizable = new BooleanManagedProperty(false),
    IsOnExternalCreatedEnabled = true,
    IsOnExternalDeletedEnabled = true,
    IsOnExternalUpdatedEnabled = true,
};

การใช้ชนิดผูกภายหลัง

มีสองวิธีในการสร้างอินสแตนซ์เมตาดาต้าของเอนทิตีเสมือนโดยใช้ชนิด late-bound ซึ่งเทียบเท่ากัน:

var virtualEntityMetadata = new Entity("virtualentitymetadata");
virtualEntityMetadata["name"] = "Person Virtual Metadata";
virtualEntityMetadata["extensionofrecordid"] = new EntityReference("entity", entityId.Value);
virtualEntityMetadata["iscustomizable"] = new BooleanManagedProperty(false);
virtualEntityMetadata["isonexternalcreatedenabled"] = true;
virtualEntityMetadata["isonexternaldeletedenabled"] = true;
virtualEntityMetadata["isonexternalupdatedenabled"] = true;

หรือ:

  var virtualEntityMetadata = new Entity("virtualentitymetadata") { 
      Attributes = new AttributeCollection {
          { "name","Person Virtual Metadata" },
          { "extensionofrecordid", new EntityReference("entity", entityId.Value)},
          { "iscustomizable",new BooleanManagedProperty(false)},
          { "isonexternalcreatedenabled",true },
          { "isonexternaldeletedenabled",true },
          { "isonexternalupdatedenabled",true}
      }            
  };

การสร้างระเบียน

เมื่อสร้างเรกคอร์ด ให้ใช้เมธอด CreateRequest Class แทนที่จะเป็น เมธอด IOrganizationService.Create เพื่อให้คุณสามารถรวม SolutionUniqueName พารามิเตอร์ที่เลือกได้ ซึ่งจะเพิ่มระเบียนลงในโซลูชันของคุณเมื่อคุณสร้าง ข้อมูลเพิ่มเติม: การส่งพารามิเตอร์แบบเลือกได้ด้วยคำขอ

var createRequest = new CreateRequest
{
    Target = virtualEntityMetadata
};
createRequest["SolutionUniqueName"] = "YourSolutionUniqueName";

service.Execute(createRequest);

ดูข้อความที่สร้างขึ้นเพื่อสนับสนุนตารางเสมือนของคุณ

วิธีง่ายๆ ในการตรวจสอบว่ามีข้อความที่คุณเปิดใช้งานแล้วนั้นมีอยู่จริงคือการตรวจสอบเอกสารบริการ $metadata ของ Web API

คุณสามารถทําสิ่งนี้ได้ในเบราว์เซอร์ของคุณ ใช้ URL สําหรับองค์กรของคุณ พิมพ์ต่อไปนี้ลงในเบราว์เซอร์ของคุณ:

[Organization Uri]/api/data/v9.2/$metadata

นี่เป็นเอกสาร XML ขนาดใหญ่ แต่คุณสามารถค้นหา 'OnExternalCreated' และค้นหาข้อกําหนดของการดําเนินการ ในกรณีนี้สําหรับ new_people ตารางเสมือนได้

<Action Name="OnExternalCreated" IsBound="true">
 <Parameter Name="entityset" Type="Collection(mscrm.new_people)" Nullable="false"/>
 <Parameter Name="Target" Type="mscrm.crmbaseentity" Nullable="false"/>
</Action>

คุณจะเห็นว่า นี่คือการดําเนินการ OData ที่ new_people ผูกไว้กับชุดเอนทิตี คุณจะพบการดําเนินการที่คล้ายกันสําหรับ OnExternalDeletedและ OnExternalUpdated:

<Action Name="OnExternalDeleted" IsBound="true">
 <Parameter Name="entityset" Type="Collection(mscrm.new_people)" Nullable="false"/>
<Parameter Name="Target" Type="mscrm.crmbaseentity" Nullable="false"/>
</Action>
<Action Name="OnExternalUpdated" IsBound="true">
 <Parameter Name="entityset" Type="Collection(mscrm.new_people)" Nullable="false"/>
 <Parameter Name="Target" Type="mscrm.crmbaseentity" Nullable="false"/>
</Action>

ดูข้อความโดยใช้เครื่องมือการลงทะเบียนปลั๊กอิน

เมื่อคุณลงทะเบียนขั้นตอนปลั๊กอินโดยใช้เครื่องมือลงทะเบียนปลั๊กอิน คุณจะพบข้อความเหล่านี้

การลงทะเบียนขั้นตอนปลั๊กอินบนข้อความ OnExternalCreated สําหรับเอนทิตี new_people

ใช้ข้อความเพื่อแจ้งให้ Dataverse ทราบเกี่ยวกับการเปลี่ยนแปลง

เมื่อต้องการแจ้ง Dataverse ของการเปลี่ยนแปลง คุณต้องเรียกใช้ API ที่เหมาะสม คุณสามารถใช้ Dataverse Web API หรือ SDK สําหรับ .NET อย่างใดอย่างหนึ่ง

ก่อนที่จะใช้ข้อความเหล่านี้ คุณอาจต้องการใช้ขั้นตอนการอธิบายในการ ดูข้อความที่สร้างขึ้นเพื่อสนับสนุนตารางเสมือนของคุณ เพื่อยืนยันว่ามีอยู่

การใช้ API เว็บ

เนื่องจาก API เหล่านี้เป็นการดําเนินการ OData ที่ผูกกับคอลเลกชันตาราง คุณสามารถทําตามรูปแบบที่ระบุไว้ที่นี่: ใช้การดําเนินการ> Api เว็บที่ผูก>การดําเนินการที่ผูกไว้กับคอลเลกชันตาราง ต่อไปนี้เป็นตัวอย่างที่แสดงการใช้ new_people ตารางเสมือน

ถ้าระบบการเรียกใช้ทราบค่า ID ควรรวมไว้เสมอ อินสแตนซ์ของเอนทิตีที่ส่งผ่านโดยใช้พารามิเตอร์ เป้าหมาย ต้องมีการตั้งค่าคุณสมบัติคําอธิบายประกอบที่เหมาะสม @odata.type เพื่อกําหนดชนิดของเอนทิตี ถ้าไม่ได้รวมไว้ ข้อผิดพลาดจะถูกส่งกลับ

การเรียกใช้งานเหล่านี้ควรคืนค่า 204: No Content เสมอ

OnExternalCreated

สําหรับการดําเนินการนี้ ค่าควรรวมคุณสมบัติทั้งหมดที่ตั้งค่าเมื่อสร้างระเบียน

POST [Organization Uri]/api/data/v9.1/new_peoples/Microsoft.Dynamics.CRM.OnExternalCreated HTTP/1.1
Authorization: Bearer [REDACTED]
Content-Type: application/json
 
{
    "Target": {
        "@odata.type": "Microsoft.Dynamics.CRM.new_people",
        "new_name": "John",
        "new_age": 23,
        "new_lastname": "Doe",
        "new_peopleid": "f6f5896b-bf08-455c-9bd3-526760cb3685"
    }
}

OnExternalUpdated

สําหรับการดําเนินการนี้ ควรรวมเฉพาะคุณสมบัติที่มีการเปลี่ยนแปลงเท่านั้น

POST [Organization Uri]/api/data/v9.1/new_peoples/Microsoft.Dynamics.CRM.OnExternalUpdated HTTP/1.1
Authorization: Bearer [REDACTED]
Content-Type: application/json
 
{
    "Target": {
        "@odata.type": "Microsoft.Dynamics.CRM.new_people",
        "new_age": 24,
        "new_peopleid": "f6f5896b-bf08-455c-9bd3-526760cb3685"
        }
}

OnExternalDeleted

สําหรับการดําเนินการนี้ จําเป็นต้องมีตัวระบุที่ไม่ซ้ํากันสําหรับเรกคอร์ดเท่านั้น

POST [Organization Uri]/api/data/v9.1/new_peoples/Microsoft.Dynamics.CRM.OnExternalDeleted HTTP/1.1
Authorization: Bearer [REDACTED]
Content-Type: application/json
{
    "Target": {
        "@odata.type": "Microsoft.Dynamics.CRM.new_people",
        "new_peopleid": "f6f5896b-bf08-455c-9bd3-526760cb3685"
        }
}

การใช้ SDK สําหรับ .NET

เมื่อใช้ SDK สําหรับ .NET คุณสามารถใช้ชนิดการผูกตั้งแต่ต้นหรือช้าได้ ข้อมูลเพิ่มเติม: การเขียนโปรแกรม Late-bound และ Early-bound โดยใช้ SDK สําหรับ .NET

ชนิดข้อมูลที่กำหนดล่วงหน้า

ตัวอย่างนี้ใช้ CrmServiceClient กับชนิด early-bound แม้ว่าจะ ServiceClient สามารถใช้ได้เช่นกัน

var service = new CrmServiceClient(conn);
// var service = new ServiceClient(conn);

//OnExternalCreated
var createPerson = new new_people
{
    new_peopleId = new Guid("f6f5896b-bf08-455c-9bd3-526760cb3685"),
    new_name = "John",
    new_Age = 23,
    new_LastName = "Doe"
};


var createRequest = new OnExternalCreatedRequest
{
    Target = createPerson
};

service.Execute(createRequest);

//OnExternalUpdated
var updatePerson = new new_people
{
    new_peopleId = new Guid("f6f5896b-bf08-455c-9bd3-526760cb3685"),
    new_Age = 24
};


var updateRequest = new OnExternalUpdatedRequest
{
    Target = updatePerson
};

service.Execute(updateRequest);

//OnExternalDeleted
var deletePerson = new new_people
{
    new_peopleId = new Guid("f6f5896b-bf08-455c-9bd3-526760cb3685")
};


var deleteRequest = new OnExternalDeletedRequest
{
    Target = deletePerson
};

ชนิดผูกภายหลัง

ตัวอย่างนี้ใช้ CrmServiceClient กับชนิด late-bound แม้ว่าจะ ServiceClient สามารถใช้ได้เช่นกัน

var service = new CrmServiceClient(conn);
// var service = new ServiceClient(conn);

  //OnExternalCreated
  Entity createPerson = new Entity("new_people");
  createPerson["new_peopleid"] = new Guid("f6f5896b-bf08-455c-9bd3-526760cb3685");
  createPerson["new_name"] = "John";
  createPerson["new_age"] = 23;
  createPerson["new_lastname"] = "Doe";

  
  var orgCreateRequest = new OrganizationRequest("OnExternalCreated");
  orgCreateRequest["Target"] = createPerson;

  service.Execute(orgCreateRequest);

  //OnExternalUpdated
  Entity updatePerson = new Entity("new_people");
  updatePerson["new_peopleid"] = new Guid("f6f5896b-bf08-455c-9bd3-526760cb3685");
  updatePerson["new_age"] = 24;

  
  var orgUpdateRequest = new OrganizationRequest("OnExternalUpdated");
  orgUpdateRequest["Target"] = updatePerson;

  service.Execute(orgUpdateRequest);

  //OnExternalDeleted
  Entity deletePerson = new Entity("new_people");
  deletePerson["new_peopleid"] = new Guid("f6f5896b-bf08-455c-9bd3-526760cb3685");

  
  var orgDeleteRequest = new OrganizationRequest("OnExternalDeleted");
  orgDeleteRequest["Target"] = deletePerson;

  service.Execute(orgDeleteRequest);

ดูเพิ่มเติม

เฟรมเวิร์กเหตุการณ์
เหตุการณ์ทางธุรกิจของ Microsoft Dataverse
เริ่มต้นใช้งานตารางเสมือน (เอนทิตี)