Вы можете сформировать результат JSON в вашем контроллере следующим образом:
public JsonResult Person(int id)
{
var person = PersonRepository.FindByID(id);
var result = new { Id = person.Id, Name = person.Name };
return Json(result);
}
Это ограничит серию DTO, содержащую только те значения, которые вы хотите.
Edit:
В качестве примитивного ответа на ваш комментарий к вопросу; Вы можете создать более простой класс PersonViewModel (DTO), которому вы можете сопоставить свойства. Как отметил Джон Сондерс в своем ответе, Automapper - хороший способ упростить копирование значений свойств из экземпляра EF Person:
Модифицированный метод Action может выглядеть так:
public JsonResult Person(int id)
{
var person = PersonRepository.FindByID(id);
var dto = Mapper.Map<Person, PersonViewModel>(person);
return Json(dto);
}
Единственный другой вариант, который я могу придумать, - это использовать отражение, чтобы изменить атрибуты DataMemberAttributes в сущности Person для подавления свойства EntityKey.