проблема с контрактом данных wcf

#.net #wcf #iphone-sdk-3.0 #datacontract

#.net #wcf #iphone-sdk-3.0 #datacontract

Вопрос:

У меня проблема с контрактом данных в моем приложении. В моей базе данных есть 5 таблиц, и мне потребовались 3 из них в качестве типа данных. Итак, я создал класс и очистил всю необходимую таблицу как класс в [Datacontract] .

Вот код

 [DataContract]
public class CustomerDetail
{
    [DataMember]
    public int CustomerID { get; set; }
    [DataMember]
    public string CustomerName { get; set; }
    [DataMember]
    public long ContactNumber { get; set; }
    [DataMember]
    public string Email { get; set; }
    [DataMember]
    public string Address { get; set; }
    [DataMember]
    public string Password { get; set; }
}

[DataContract(Name = "CustomerDetail")]
public class CustomerAccount
{
    [DataMember]
    public int AccountId { get; set; }
    [DataMember ]
    public short PinNo { get; set; }
    [DataMember (Name="CustomerID")]
    public int CustomerID { get; set; }
    [DataMember]
    public int AccountTypeId { get; set; }
    [DataMember]
    public float Amount { get; set; }

}

[DataContract(Name = "CustomerDetail")]
public class TransactionDetail
{
    [DataMember]
    public int TransactionId { get; set; }
    [DataMember (Name ="CustomerID")]
    public int CustomerId { get; set; }
    [DataMember]
    public int AccountId { get; set; }
    [DataMember]
    public int TransactiopnTypeId { get; set; }
    [DataMember]
    public float AmountAfterTransaction { get; set; }
}
  

я тоже использовал атрибуты, но я получаю исключение недопустимого контракта данных..
пожалуйста, помогите мне, что я должен сделать, чтобы решить это.

Комментарии:

1. Какое именно исключение вы получаете?

Ответ №1:

Я думаю, это потому, что вы используете параметр Name в своих контрактах на данные. Похоже, вы вырезали и вставили эти атрибуты.

Просто удалите все параметры «Name» из ваших атрибутов DataContract и DataMember. Они не нужны для того, что вы делаете, и вызывают у вас проблемы.

Комментарии:

1. Я попробовал это без какого-либо атрибута, но возникло то же исключение. Затем я погуглил это, но не нашел подходящего способа ее решения.

Ответ №2:

Проблема в том, что вы используете одно и то же имя «CustomerDetails» для нескольких объектов. Попробуйте использовать этот код вместо вашего кода (Примечание: я только что удалил два атрибута Name=CustomerDetail).

  [DataContract]
    public class CustomerDetail
    {
        [DataMember]
        public int CustomerID { get; set; }
        [DataMember]
        public string CustomerName { get; set; }
        [DataMember]
        public long ContactNumber { get; set; }
        [DataMember]
        public string Email { get; set; }
        [DataMember]
        public string Address { get; set; }
        [DataMember]
        public string Password { get; set; }

    }
    [DataContract]
    public class CustomerAccount
    {
        [DataMember]
        public int AccountId { get; set; }
        [DataMember]
        public short PinNo { get; set; }
        [DataMember(Name = "CustomerID")]
        public int CustomerID { get; set; }
        [DataMember]
        public int AccountTypeId { get; set; }
        [DataMember]
        public float Amount { get; set; }

    }

    [DataContract]
    public class TransactionDetail
    {
        [DataMember]
        public int TransactionId { get; set; }
        [DataMember(Name = "CustomerID")]
        public int CustomerId { get; set; }
        [DataMember]
        public int AccountId { get; set; }
        [DataMember]
        public int TransactiopnTypeId { get; set; }
        [DataMember]
        public float AmountAfterTransaction { get; set; }
    }