У меня есть объект LINQ to SQL, который я буду сериализовать и возвращать как JSON через вызов webservice.ScriptIgnore в LINQ to SQL
В этом объекте есть одно свойство, которое я бы хотел не сериализовать. Для этого обычно существует атрибут [ScriptIgnore]
, который работает именно так, как я хочу, если я вручную добавлю его в файл designer.cs
.
Теперь, поскольку файл конструктора автоматически генерируется, я бы предпочел не вручную его редактировать, так как любые изменения могут быть легко перезаписаны. Таким образом, мой вопрос: есть ли способ аннотировать свойство так, чтобы он был исключен при сериализации, непосредственно в редакторе DBML?
Если ответ отрицательный; есть ли какие-либо решения для этого, которые более аккуратны, чем вручную, устанавливая свойство до null
перед его сериализацией или возвращая анонимный тип, идентичный, за исключением одного свойства? В MVC.NET есть ли способ передать параметры в метод JSON()
, чтобы изменить его поведение, возможно?
Приносим извинения, если это было задано раньше - я ожидаю, что это будет общий вопрос, но я не мог найти никого подобного.
Хе-хе, я даже не рассматривал этот вариант. Я предполагаю, что это связано с собственными недостатками в том, чтобы вручную его поддерживать, и чтобы скопировать какой-то довольно громоздкий и обычно машинный код для подключения к логике ORM. Если бы был способ сделать частичные * свойства * и просто расширить их с помощью атрибутов, я бы полностью согласился на это. Думаю, я * мог бы жить с этим, если это мой лучший вариант. +1 на данный момент, но я оставлю вопрос открытым, чтобы узнать, есть ли у кого-нибудь блестящие решения =) –
Все, что вам нужно для поддержания отображения ORM, - это сохранить атрибут столбца, украшающий свойство. Остальная часть сгенерированного кода - более прочная пластина, которая соединяет некоторые события и частичные методы. Если вы не используете события или не реализовали частичные методы, вы можете безопасно удалить этот код, и он не будет иметь никакого эффекта, кроме как удалить вашу способность использовать их позже. Как только это будет сделано, вы управляете довольно простым свойством и довольно простым атрибутом. –
@Ben: 'SendPropertyChanging' и' SendPropertyChanged («Name») 'все еще необходимы в установщике, поскольку ORM замечает новые значения и, таким образом, выполняет обновление при отправке изменений. Учитывая, что проверка 'if (BackingField! = Value)', вероятно, также желательна. Так что, я могу удалить дополнительные крючки, но я все еще думаю, что он выглядит довольно громоздким. Тем не менее, это похоже на мой лучший вариант. Я, вероятно, соглашусь с этим, если не появится нечто более перспективное. –