none
自定义类中使用实体对象作为类型的属性,在客户端接收不到 RRS feed

  • 问题

  • 整个项目采用DomainService进行客户端与服务器通信,其中一个功能中我定义了下面这样的对象

     [Serializable()]
        [DataContractAttribute(IsReference = false)]
        public class ASingleStaffData
        {
            [DataMember]
            [Display(Name = @"", AutoGenerateField = false)]
            public Guid Personnel_ID { get; set; }
     
            [DataMember]
            [Display(Name = @"姓名")]
            public string xm { get; set; }
     
            [DataMember]
            [Display(Name = @"性别")]
            public string xb { get; set; }
        }
        /// <summary>
        /// 人员股东资料
        /// </summary>
        [Serializable()]
        [DataContractAttribute(IsReference = true  )]
        public class APersonnelShareholderListData
        {
            [DataMember]
            public ASingleStaffData SingleStaffData { get; set; }
            [DataMember]
            [Include()]
            public A_Personnel_Shareholder A_Personnel_Shareholder { get; set; }
        }

    上面A_Personnel_Shareholder类型是实体框架的一个实体对象。

    然后我写了一个测试用的DomainService,

            public List<APersonnelShareholderListData> MakeAPersonnelShareholderListData(Guid a_id)
            {
                List<APersonnelShareholderListData> a = new List<APersonnelShareholderListData>();
                a.Add(new APersonnelShareholderListData()
                {
                    SingleStaffData = new ASingleStaffData() { xm = "aa" },
                    A_Personnel_Shareholder = new A_Personnel_Shareholder() { cze_zc = 123, jc = "ss" }
                });
                return a;
            }

    然后在客户端进行调用

     

                DocumentGenerationDS context = new DocumentGenerationDS();
                InvokeOperation io = context.MakeAPersonnelShareholderListData(_A_ID);
                io.Completed += (o, e) =>
                {
                    List<APersonnelShareholderListData> res = io.Value as List<APersonnelShareholderListData>;
                    foreach (var item in res)
                    {
                        ObjectList.Add(item);
                    }
                };

    返回的结果(item)里面 ASingleStaffData 对象的数据在客户端出现了A_Personnel_Shareholder 对象的数据就像消失了一样,连属性都没有。

    客户端获得的对象的结构成了下面的样子了

        public class APersonnelShareholderListData
        {
            public ASingleStaffData SingleStaffData { get; set; }
        }

    太诡异了。谁知道原因啊,求救

     

     

     

     

     


    • 已编辑 超然 2011年11月2日 6:49
    2011年11月2日 3:22

答案

  • 问题自己解决了,需要在对象上加入这个属性

            [Association("A_Personnel_Shareholder""A_ID,Personnel_ID""A_ID,Personnel_ID")]
            public A_Personnel_Shareholder A_Personnel_Shareholder { getset; }
    • 已标记为答案 超然 2011年11月2日 7:59
    2011年11月2日 7:59

全部回复

  • 检查发现在自动生成的“DDIMWeb2.SLUI.Web.g.cs”文件中APersonnelShareholderListData的定义就没有A_Personnel_Shareholder 对象,怎么回事啊,命名服务器那里有啊,为什么给屏蔽了。

    /// <summary>
        /// “APersonnelShareholderListData”类。
        /// </summary>
        [DataContract(Namespace="http://schemas.datacontract.org/2004/07/DDIMWeb2.DataObject.DocumentGeneration")]
        public sealed partial class APersonnelShareholderListData : ComplexObject
        {
            
            private ASingleStaffData _singleStaffData;
            
            #region 可扩展性方法定义
     
            /// <summary>
            /// 一旦初始化完成便从构造函数中调用此方法,
            /// 还可将此方法用于以后的对象设置。
            ///</summary>
            partial void OnCreated();
            partial void OnSingleStaffDataChanging(ASingleStaffData value);
            partial void OnSingleStaffDataChanged();
     
            #endregion
            
            
            /// <summary>
            /// 初始化 <see cref="APersonnelShareholderListData"/> 类的新实例。
            /// </summary>
            public APersonnelShareholderListData()
            {
                this.OnCreated();
            }
            
            /// <summary>
            /// 获取或设置“SingleStaffData”值。
            /// </summary>
            [DataMember()]
            [Display(AutoGenerateField=false)]
            public ASingleStaffData SingleStaffData
            {
                get
                {
                    return this._singleStaffData;
                }
                set
                {
                    if ((this._singleStaffData != value))
                    {
                        this.OnSingleStaffDataChanging(value);
                        this.RaiseDataMemberChanging("SingleStaffData");
                        this.ValidateProperty("SingleStaffData"value);
                        this._singleStaffData = value;
                        this.RaiseDataMemberChanged("SingleStaffData");
                        this.OnSingleStaffDataChanged();
                    }
                }
            }
        }

     

    2011年11月2日 4:47
  • 问题自己解决了,需要在对象上加入这个属性

            [Association("A_Personnel_Shareholder""A_ID,Personnel_ID""A_ID,Personnel_ID")]
            public A_Personnel_Shareholder A_Personnel_Shareholder { getset; }
    • 已标记为答案 超然 2011年11月2日 7:59
    2011年11月2日 7:59