У меня есть модель, созданная с 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, которые я отправляю клиентам самым удобным образом?