2013-08-09 2 views
0

У меня вопрос. Я получаю эту ошибку, и я знаю, что это связано с тем, что int32 имеет предел числа 2147483647. Но я не знаю, почему я получаю эту ошибку, когда значение, о котором идет речь (номер телефона из 11 цифр), определяется как строку в нашей базе данных SQL, строку в нашей веб-службе и строку в нашем веб-приложении.Исключение веб-сервиса: «Форматирующий редактор исключил при попытке десериализации сообщения«

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

Приведено исключение ошибки. Я удалил пространство имен и имя службы. Это номер свойства, который вызывает проблему.

Ошибка десериализации объекта типа. ". ClientPhone []. Значение '07721545554' не может быть проанализировано как тип 'Int32'."

И вот код для сервисного и сервисного интерфейса.

[DataContract] 
public class ClientPhone 
{ 
    [DataMember] 
    public int? ClientNumberID { get; set; } 
    [DataMember] 
    public int? RefID { get; set; } 
    [DataMember] 
    public string Number { get; set; } 
    [DataMember] 
    public string NumberType { get; set; } 
    [DataMember] 
    public bool? PrimaryNumber { get; set; } 
} 

    public partial class ClientNumberEntity 
{ 
    public int ClientNumbersID { get; set; } 
    public Nullable<int> RefID { get; set; } 
    public string ClientNumberType { get; set; } 
    public string ClientNumber { get; set; } 
    public Nullable<bool> PrimaryNumber { get; set; } 

    public virtual ClientDataEntity ClientData { get; set; } 
} 

public List<ClientPhone> GetClientsPhoneByReference(int _reference) 
    { 
     OurDatabaseEntities context = new OurDatabaseEntities(); 
     var phoneEntity = (from c in context.ClientNumberEntities 
          where c.RefID == _reference 
          select c).ToList(); 
     if (phoneEntity != null) 
     { 
      return TranslateClientPhoneEntityToPhoneNumberList(phoneEntity); 
     } 
     else 
      throw new Exception("Unable to get phone data"); 
    } 

private List<ClientPhone> TranslateClientPhoneEntityToPhoneNumberList(List<ClientNumberEntity> numberEntities) 
    { 
     List<ClientPhone> phoneList = new List<ClientPhone>(); 
     foreach (ClientNumberEntity numberEntity in numberEntities) 
     { 
      ClientPhone phoneListMember = new ClientPhone(); 
      phoneListMember.ClientNumberID = numberEntity.ClientNumbersID; 
      phoneListMember.RefID = numberEntity.RefID; 
      phoneListMember.Number = numberEntity.ClientNumber; 
      phoneListMember.NumberType = numberEntity.ClientNumberType; 
      phoneListMember.PrimaryNumber = numberEntity.PrimaryNumber; 
      phoneList.Add(phoneListMember); 
     } 
     return phoneList; 
    } 

Любые советы по решению были бы благодарны! Спасибо :)

ответ

0

Получил решение, хотя его глупость на моем конце.

Я не понял, что моя диаграмма сущности .EDMX не была обновлена ​​новыми значениями из базы данных (мне пришлось вручную удалить объект и повторно добавить его для принудительного изменения).

После повторной компиляции и обновления справочной службы это сработало.

Смежные вопросы