سؤال

أنا أعمل على تطبيق Silverlight 4.0 وأستخدم خدمات RIA. لقد قمت بإنشاء فئة على جانب الخادم الذي يحتوي على سمات DataContract و Datamember المطبق عليها.

يعرض خدمة Domainser هذه الفئة نتيجة استعلام ، وعلى هذا النحو ، تقوم بإنشاء رمز لها على العميل. لكن بطريقة ما لا يولد رمزًا لجميع خصائص الفصل. يتم إنشاء الخصائص البدائية من Type Guid و String و Int و Bool وما إلى ذلك على ما يرام ، ولكن إذا كان لدي خاصية من النوع المعقد الخاص بي ، فإن هذه الخاصية لا يتم إنشاؤها على العميل.

هذا هو الفصل المعني:

    [DataContract]
    [KnownType(typeof(SummaryGroup))]
    public class SummaryDataSet
    {
        public SummaryDataSet()
        {

        }

        [KeyAttribute]
        [DataMember]
        public Guid Guid { get; set; }

        [DataMember]
        public SummaryGroup SummaryGroup { get; set; }

    }

يتم إنشاء خاصية GUID على العميل على ما يرام. لم يتم إنشاء خاصية SummaryGroup على العميل. إليك الرمز الخاص بـ CummaryGroup:

[DataContract]
public class SummaryGroup
{
    public SummaryGroup()
    {
    }

    [KeyAttribute]
    [DataMember]
    public Guid Guid { get; set; }

    [DataMember]
    public string Name { get; set; }

    [DataMember]
    public int Sequence { get; set; }
}

كلا الفئتين في نفس مساحة الاسم.

سؤال: لماذا لا يتم إنشاء خاصية SummaryGroup الخاصة بـ SummaryDataset على العميل وما الذي يجب علي فعله لإصلاح هذا؟

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

المحلول

لا يمكن لـ WCF RIA التعامل مع الأنواع المعقدة ، ولكن يمكنك تجربة هذا:

    [DataContract]
    [KnownType(typeof(SummaryDataSet))]
    public class SummaryDataSet
    {
        public SummaryDataSet()
        { }

        [KeyAttribute]
        [DataMember]
        public Guid Guid { get; set; }

        [DataMember]
        [Association("SummarySet_SummaryGrp_FK", "Guid", "Guid")]
        public SummaryGroup SummaryGroup { get; set; }

    }

هذا يمنح RIA المعلومات للاتصال من SummaryDatAset إلى SummaryGroup.

هذا يفترض أنه يمكنك طلب كل من SummaryDataset و SummaryGroup من خدمة Serverside.

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