1

Activity オブジェクト配列を返す際に以下のエラーが表示されます。問題が発生している場所を理解できません。誰か助けてください。

ここにエラーがあります

名前空間 'http://schemas.datacontract.org/2004/07/BusinessEntities' の終了要素 'ActivityTypeId' が必要です。名前空間「http://schemas.datacontract.org/2004/07/BusinessEntities」から要素「a:Code」が見つかりました。行 1、位置 450。

UI 関連コード:

  protected void Page_Load(object sender, EventArgs e)
    {
        TimeSheetManagementServiceClient serviceClient = new TimeSheetManagementServiceClient("WSHttpBinding_ITimeSheetManagementService");
        Activity[] activities=serviceClient.GetActivities();
        GridView1.DataSource = activities;
        GridView1.DataBind();

    }

WCFService コード

 public class TimeSheetManagementService:ITimeSheetManagementService 
    {
        public BusinessEntities.Activity[] GetActivities()
        {
            TimeSheetManagementDataController controller= new TimeSheetManagementDataController();
            var activities = controller.GetActivities().Select(activity => new BusinessEntities.Activity()
                                                                               {
                                                                                   Code = activity.Code,
                                                                                   Description = activity.Description,
                                                                                   Status =
                                                                                       (EntityStatus)
                                                                                       Enum.Parse(typeof(EntityStatus), ((activity.Status==true) ? 0 : 1).ToString()),
                                                                                   ActivityTypeId = new BusinessEntities.ActivityType()
                                                                                                        {
                                                                                                          Code=activity.ActivityType.Code,
                                                                                                          Description = activity.ActivityType.Description,
                                                                                                          Name = activity.ActivityType.Name
                                                                                                        }


                                                                               });
            return activities.ToArray();
        }

    }

サービス契約

  [ServiceContract]
    interface ITimeSheetManagementService
    {
        [OperationContract]
        Activity[] GetActivities();
    }

データ契約

[DataContract]
public class Activity
{
    [DataMember]
    public string Code { get; set; }
    [DataMember]
    public string Description { get; set; }
    [DataMember]
    public EntityStatus Status { get; set; }
    [DataMember]
    public ActivityType  ActivityTypeId { get; set; }
}
[DataContract]
public enum EntityStatus
{
    [EnumMember]
    Active=0,
    [EnumMember]
    Inactive=1
}

[DataContract]
public class ActivityType
{
    [DataMember]
    public string Code { get; set; }
    [DataMember]
    public string Name { get; set; }
    [DataMember]
    public string Description { get; set; }


}
4

1 に答える 1

0

よくわかりませんが、問題は Activity クラスのデータメンバーのアルファベット順だと思います。テストのためだけに、Datamember 属性で order プロパティを指定することを検討してください。 http://msdn.microsoft.com/en-us/library/ms729813%28v=vs.90%29.aspx

これが役立つことを願っています

于 2012-04-30T20:20:09.790 に答える