2017-01-05 10 views
0

У меня есть модель, созданная с Linq To SQL class. Модель выглядит следующим образом:Web API 2 - Ограничить модель данных с помощью интерфейса

public class Person 
{ 
    public int id; 
    public string userName; 
    public string firstName; 
} 

Я хочу использовать аннотации данных, так что я implemeneted интерфейс, который называется IPerson

interface IPerson 
{ 
    [Required] 
    public int id; 
    [Required] 
    public string userName; 
    [Required] 
    public string firstName; 
} 

Затем изменил мою модель на это:

[MetadataType(typeof(IPerson))] 
public class Person: IPerson 
{ 
    public int id; 
    public string userName; 
    public string firstName; 
} 

Это хорошо работает , однако у меня есть следующие вопросы:

  • Я хотел бы исключить некоторые элементы данных (например, firstName) из сериализации в действие контроллера. Для этого я хотел бы использовать DataContract, однако я не могу использовать это в интерфейсе IPerson, поскольку он работает только с классами или Enums. Я не хочу реализовывать Data Contract непосредственно в модели Person, потому что я, вероятно, добавлю новые столбцы в базы данных SQL (которые будут генерировать новые классы моделей), и я бы хотел, чтобы уровень доступа к данным был слабо связан с моей бизнес-логикой ,

Как я могу исключить элементы данных из сериализации в ответах JSON, которые я отправляю клиентам самым удобным образом?

ответ

0

Я установил его, я использовал:

using Newtonsoft.Json; 

затем использовали [JsonIgnore] на элементах данных я не хочу, чтобы сериализовать в интерфейсе IPerson.