Получение расширенного свойства класса LINQ для сериализации - PullRequest
2 голосов
/ 05 августа 2010

У меня есть класс LINQ to SQL (dbml), представляющий некоторые таблицы в базе данных.Я добавил своего рода «вычисляемое поле», расширив частичный класс одной из таблиц (Dwelling) новым свойством (DwellingCode);это свойство принимает значения нескольких полей базы данных в таблице Dwelling и генерирует строку.

Пока все работает нормально;Я могу заставить это вычисленное поле правильно отображаться в связанных элементах управления на веб-страницах и т. Д. Проблема в том, что у меня также есть веб-сервис SOAP, который возвращает объект Dwelling.Когда объект Dwelling сериализуется в XML, DwellingCode не включается в остальные поля «реальной» базы данных.

Что мне нужно сделать, чтобы свойство DwellingCode сериализовалось с остальной частью базы данныхполя?Основываясь на некотором поиске, я попытался добавить [DataMember] и [DataMamberAttribute] в свойство DwellingCode, а также [DataContract] и [Serializable] в частичный класс, но, похоже, ничего не работает.

Ответы [ 2 ]

0 голосов
/ 06 августа 2010

Ваша собственность доступна только для чтения, поэтому она не сериализуется. Стандартная встроенная сериализация только сериализует свойства чтения-записи (как вы, похоже, нашли).

0 голосов
/ 05 августа 2010

Хорошо, добавление этого свойства в свойство DwellingCode сработало:

[global::System.Runtime.Serialization.DataMemberAttribute(Name = "DwellingCode")]

По какой-то причине они НЕ работают. Я не уверен, почему удаление полного пути к пространству имен не работает, когда я его «использую», и в прочитанной мной документации сказано, что имя будет таким же, как имя свойства, если не указан параметр name , поэтому я не знаю, почему это так привередливо.

using System.Runtime.Serialization;
...
[DataMemberAttribute(Name = "DwellingCode")]
[DataMemberAttribute()]

Edit:

Мне также нужно было добавить пустой установщик, иначе свойство не появилось бы. Безотносительно.

[global::System.Runtime.Serialization.DataMemberAttribute(Name = "DwellingCode")] 
public string DwellingCode
{

    set
    {

    }

    get
    {
        // code goes here
    }

}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...