ตัวให้บริการข้อมูลตารางเสมือนแบบกําหนดเอง

เมื่อใช้ Microsoft Dataverse Data SDK นักพัฒนา.NET สามารถสร้างผู้ให้บริการข้อมูลตารางเสมือนแบบกําหนดเองเพื่อช่วยรวมชนิดแหล่งข้อมูลภายนอกที่ไม่ได้รับการรองรับโดยผู้ให้บริการข้อมูลที่มีอยู่ ตัวให้บริการข้อมูลแต่ละตัวประกอบด้วยชุดปลั๊กอิน Dataverse ที่นํามาใช้ใหม่ได้ซึ่งใช้การดําเนินการ CRUD ที่ได้รับการสนับสนุน สําหรับแต่ละตารางเสมือน หรือที่เรียกว่าเอนทิตีเสมือน นักพัฒนาสามารถสร้างปลั๊กอินและลงทะเบียนโดยแสดงการดําเนินการสร้างอัปเดตเรียกใช้ RetrieveMultiple และ Delete แต่ละรายการได้ ส่วนนี้มีข้อมูลพื้นฐานเกี่ยวกับผู้ให้บริการข้อมูลและวิธีการพัฒนาผู้ให้บริการแบบกําหนดเอง รวมถึงโค้ดตัวอย่าง

Note

แทนที่จะสร้างผู้ให้บริการแหล่งข้อมูลแบบกําหนดเอง ให้พิจารณาปรับแหล่งข้อมูลของคุณไปยังผู้ให้บริการข้อมูลที่มีอยู่ ตัวอย่างเช่น ถ้าคุณสร้างอินเทอร์เฟซ OData v4 กับแหล่งข้อมูลภายนอกของคุณ คุณสามารถเข้าถึงได้โดยตรงโดยใช้ OData v4 ตัวให้บริการข้อมูล มาตรฐานที่ให้มา ซึ่งสนับสนุนการดําเนินการ CRUD กลไกสําหรับการเพิ่มอินเทอร์เฟซ REST นี้แตกต่างกันด้วยเทคโนโลยีบริการข้อมูลพื้นฐาน ตัวอย่างเช่น ดู WCF Data Services 4.5 OData มีการสนับสนุนอุตสาหกรรมในวงกว้างด้วยเครื่องมือเฉพาะและเทคโนโลยีที่เข้ากันได้หลากหลาย

ข้อกําหนดเบื้องต้น

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

Microsoft.Xrm.Sdk.Data.dllแอสเซมบลีพร้อมใช้งานเป็นแพคเกจ NuGet: Microsoft.CrmSdk.Data

ประเภทของตัวให้บริการ

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

ประเภท โมเดลการพัฒนา คำอธิบาย:
ทั่วไป ตัวให้บริการ "โลหะเปล่า" ผู้ให้บริการเหล่านี้แปลนิพจน์คิวรี FetchXML อย่างยืดหยุ่นเป็นคําขอที่เกี่ยวข้องไปยังแหล่งข้อมูลภายนอก จากนั้นส่งกลับเรกคอร์ดผลลัพธ์ คุณสามารถนําผู้ให้บริการดังกล่าวกลับมาใช้ใหม่สําหรับอินสแตนซ์ทั้งหมดของชนิดแหล่งข้อมูลนี้ วิธีนี้เป็นวิธีการทั่วไปมากที่สุด แต่มีความซับซ้อนมากขึ้นในการพัฒนา ถ้าสคีมาของแหล่งข้อมูลมีการเปลี่ยนแปลง คุณจะต้องแมปตารางเสมือนที่ได้รับผลกระทบอีกครั้ง
ถูกเล็ง ตัวให้บริการ LINQ สําหรับสคีมาที่รู้จัก ผู้ให้บริการดังกล่าวแปลคิวรีให้แคบลงเป็นการเรียก LINQ ที่เกี่ยวข้องไปยังอินสแตนซ์แหล่งข้อมูลที่มีอยู่ที่เป็นที่รู้จัก แหล่งข้อมูลต้องเป็นตัวให้บริการ LINQ ตามที่อธิบายไว้ในบทความการเปิดใช้งานแหล่งข้อมูลสําหรับการคิวรี LINQ วิธีการนี้จํากัดไว้เฉพาะกับอินสแตนซ์แหล่งข้อมูลที่เฉพาะเจาะจง แต่ต้องมีการเขียนโค้ดที่น้อยกว่ามาก ถ้าสคีมาของแหล่งข้อมูลเปลี่ยนแปลง คุณต้องอัปเดตและสร้างตัวให้บริการข้อมูลใหม่

ตัวให้บริการข้อมูล OData v4 มาตรฐานและผู้ให้บริการข้อมูล Azure Cosmos DB เป็นตัวอย่างของผู้ให้บริการทั่วไป

ขั้นตอนในการใช้ตัวให้บริการข้อมูลที่กําหนดเอง

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

  1. พัฒนาปลั๊กอินตัวให้บริการข้อมูลแบบกําหนดเอง DLL หรือชุดของ DLL
  2. ลงทะเบียนผู้ให้บริการข้อมูลแบบกําหนดเองกับบริการ Dataverse ของคุณโดยใช้เครื่องมือการลงทะเบียนปลั๊กอิน (PRT)
  3. สร้างโซลูชันตัวให้บริการข้อมูล
  4. กําหนดตารางแหล่งข้อมูลเพื่อแสดงชนิดข้อมูลของคุณหรืออินสแตนซ์เฉพาะ
  5. ส่งออกโซลูชันตัวให้บริการข้อมูลที่กําหนดเอง

สําหรับข้อมูลเพิ่มเติม โปรดดูตัวอย่าง: ผู้ให้บริการตารางเสมือนแบบกําหนดเองที่มีการดําเนินการ CRUD

การพัฒนาปลั๊กอิน

เนื่องจากตารางเสมือนรองรับการดําเนินการ CRUD ให้เขียนผู้ให้บริการข้อมูลเป็นปลั๊กอินที่คุณลงทะเบียนในเหตุการณ์ สร้างอัปเดตRetrieveRetrieveMultiple และ Delete แต่ละเหตุการณ์ประกอบด้วยข้อมูลในบริบทการดําเนินการที่อธิบายชนิดของข้อมูลที่จะส่งกลับ

เหตุการณ์ บริบทการดำเนินการ
กอบกู้ อธิบายตารางที่จะเรียกใช้รวมถึงคอลัมน์และตารางใด ๆ ที่เกี่ยวข้องที่จะรวม
RetrieveMultiple QueryExpressionประกอบด้วยวัตถุที่กําหนดคิวรี เฟรมเวิร์กมีคลาส QueryExpressionVisitor ที่ออกแบบมาเพื่อตรวจสอบส่วนต่างๆ ของแผนผังนิพจน์คิวรี

สําหรับเหตุการณ์ทั้งสอง คุณต้อง:

  1. แปลงข้อมูลที่เกี่ยวข้องในบริบทการดําเนินการเป็นคิวรีที่ทํางานได้กับแหล่งข้อมูลภายนอกของคุณ
  2. ดึงข้อมูลจากระบบภายนอก
  3. สําหรับ Retrieve ให้แปลงข้อมูลเป็น Entity; มิฉะนั้นสําหรับ RetrieveMultiple ให้แปลงเป็นEntityCollection Dataverse ส่งกลับผลลัพธ์นี้ผ่าน ไปยังผู้ใช้ที่ดําเนินการคิวรี

คลาสใน Microsoft.Xrm.Sdk.Data namespace มีเฟรมเวิร์กเพื่อช่วยในการแมปข้อมูลคิวรี Dataverse จากบริบทการดําเนินการลงในคิวรีในรูปแบบที่เหมาะสมสําหรับแหล่งข้อมูลภายนอกของคุณ เฟรมเวิร์กนี้ช่วยให้คุณสามารถแปลงข้อมูลที่ส่งกลับเป็นที่เหมาะสม Entity หรือ EntityCollection ชนิดที่คาดหวังโดยแพลตฟอร์ม Dataverse

ข้อยกเว้นของตัวให้บริการข้อมูล

ถ้าโค้ดของคุณไม่สามารถให้ผลลัพธ์ที่คาดหวังไว้ ให้แสดงข้อผิดพลาดที่เหมาะสม Microsoft.Xrm.Sdk.Data.Exceptions namespace ประกอบด้วยคลาสข้อยกเว้นต่อไปนี้ ซึ่งสืบทอดมาจาก SdkExceptionBaseซึ่งคุณสามารถใช้เพื่อวัตถุประสงค์นี้:

คลาสข้อยกเว้น คำอธิบาย:
AuthenticationException มีข้อผิดพลาดเกิดขึ้นระหว่างการรับรองความถูกต้องด้านความปลอดภัยไปยังบริการแหล่งข้อมูลภายนอก ตัวอย่างเช่น HTTP status 401 ได้รับจากบริการข้อมูลภายนอก โดยทั่วไปเกิดขึ้นเนื่องจากผู้ใช้ปัจจุบันไม่มีสิทธิ์การใช้งานที่เหมาะสมหรือข้อมูลการเชื่อมต่อใน EntityDataSource ที่เกี่ยวข้องไม่ถูกต้อง
EndpointException การกําหนดค่าปลายทางในตารางแหล่งข้อมูลไม่ถูกต้องหรือไม่มีปลายทางอยู่
GenericDataAccessException ข้อผิดพลาดในการเข้าถึงข้อมูลทั่วไป จะใช้เมื่อข้อผิดพลาดไม่แมปกับข้อยกเว้นที่เฉพาะเจาะจงมากขึ้น
InvalidMetadataException
InvalidQueryException แบบสอบถามที่ระบุไม่ถูกต้อง ตัวอย่างเช่น ประกอบด้วยการรวมคําสั่งที่ไม่ถูกต้องหรือตัวดําเนินการเปรียบเทียบที่ไม่รองรับ
ObjectNotFoundException ไม่มีระเบียนที่ระบุในแหล่งข้อมูลภายนอก
TimeoutException การดําเนินการภายนอกไม่เสร็จสมบูรณ์ภายในเวลาที่อนุญาต ตัวอย่างเช่น ผลลัพธ์ของ HTTP สถานะ 408 จากบริการข้อมูลภายนอก

การลงทะเบียนปลั๊กอิน

ใช้เครื่องมือลงทะเบียนปลั๊กอิน (PRT) เพื่อลงทะเบียนแอสเซมบลีและปลั๊กอินสําหรับแต่ละเหตุการณ์ ซึ่งแตกต่างจากปลั๊กอินทั่วไป อย่าลงทะเบียนขั้นตอนเฉพาะ ปลั๊กอินของคุณทํางานในลําดับขั้นที่ 30 ซึ่งเป็นขั้นตอนธุรกรรมหลักสําหรับการดําเนินการที่ไม่พร้อมใช้งานสําหรับขั้นตอนปลั๊กอินทั่วไป ให้กําหนดค่าผู้ให้บริการข้อมูลของคุณโดยใช้ตารางต่อไปนี้แทนการลงทะเบียนขั้นตอน

ตาราง คำอธิบาย:
EntityDataProvider กําหนดปลั๊กอินที่จะใช้สําหรับแต่ละเหตุการณ์และชื่อตรรกะของแหล่งข้อมูล

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

สําหรับข้อมูลเพิ่มเติม ดูการสร้างผู้ให้บริการข้อมูลและการเพิ่มปลั๊กอินไปยังผู้ให้บริการ

การดีบักปลั๊กอิน

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

ดูเพิ่มเติม

เริ่มต้นใช้งานตารางเสมือน
ข้อควรพิจารณาของ API ของตารางเสมือน
ตัวอย่าง: ปลั๊กอินตัวให้บริการข้อมูลตารางเสมือนทั่วไป