سؤال

يمكنني استخدام WCF DataService وأريد استخدام POCOS. لا بد لي من تحديد DataServiceKey حتى يعمل (من الواضح). عندما أفعل ذلك ، يجب أن أشير إلى system.data.services.client (للنظام.

هل هناك طريقة للحفاظ على نظافة كائناتي وتحديد المفتاح في مكان آخر؟

هل كانت مفيدة؟

المحلول

إذا كنت تستخدم مزودًا انعكاسًا ولم تتبع فئاتك اتفاقية لخصائص المفاتيح ، فعليك استخدام سمة DataServiceKey. مزود الانعكاس هو الشخص الذي تحصل عليه إذا قمت ببساطة بتقديم تعريفات الفئة وفئة السياق إلى DataService. لذلك إذا لم تقم بتنفيذ IdataservicemetAdataprovider ، فمن المحتمل جدًا أن تستخدم مزودًا انعكاسًا. من الممكن استخدام مزود الانعكاس بدون السمات على فصولك ، ولكن بعد ذلك ، تطبق خدمات بيانات WCF الاستدلال لمعرفة الخصائص الرئيسية. يذهب هكذا:

  • إذا كان لدى الفصل المعني خاصية تسمى ID ، فهي كيان يحتوي على المعرف باعتباره الخاصية الرئيسية الوحيدة.
  • إذا تم استدعاء الفصل على سبيل المثال العميل ولديه خاصية تسمى CustomerId ، فهي كيان مع خاصية CustomerId باعتبارها الخاصية الرئيسية الوحيدة (من الواضح أن اسم الفصل هو عينة).

لا يتم التعرف على أي خصائص أخرى كخصائص رئيسية بدون سمة DataServiceKey. هذا موصوف أيضًا على سبيل المثال في هذه المدونة: http://blogs.msdn.com/b/alexj/archive/2010/06/11/tip-56-writing-an-odata-service-using-the-reflection-provider.aspx

من الممكن استخدام فئات POCO بنسبة 100 ٪ مع خصائص مفتاح تعسفي ، ولكن بعد ذلك يجب عليك تنفيذ مزود مخصص. هذا عمل أكثر إلى حد كبير حيث يتعين عليك تحديد شكل فصولك بشكل برمجي. يمكن العثور على عينة مخصصة مخصصة تجول هنا: http://blogs.msdn.com/b/alexj/archive/2010/01/07/data-service-providers-getting-started.aspx

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top