У меня есть веб-сервис WCF с методом «Чтение», который выдает JSON-сериализованный список объектов Person. Каждый из этих объектов Person имеет определенный статус, представленный соответствующим объектом состояния. Это сопоставляется как отношение внешнего ключа с помощью Entity Framework.ASP.NET/WCF: сопоставление внешних ключей JSON с их реальными объектами
Теперь, для вывода JSON, я не хотел, чтобы статус каждого человека был сериализован как полный вложенный объект. Вместо этого я хотел, чтобы веб-сервис включал соответствующий «StatusId». Вот как я это сделал:
[DataContract]
public class Status
{
public Status() {}
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[DataMember(Name = "StatusId")]
public int StatusId { get; set; }
[DataMember(Name = "Description")]
public string Description { get; set; }
}
[DataContract]
public class Person
{
public Person() {}
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[DataMember(Name = "PersonId")]
public int PersonId { get; set; }
[DataMember(Name = "Name")]
public string Name { get; set; }
public Status Status { get; set; }
[DataMember(Name = "StatusId")]
[NotMapped]
public int JsonStatusId
{
get
{
if (Status == null) return -1;
return Status.StatusId;
}
set {}
}
}
И мой метод вебсервис выглядит следующим образом:
[OperationContract]
[WebGet]
public List<Person> Persons()
{
return _dbContext.Persons.
Include(person => person.Status)
Select(person => person).
ToList();
}
До сих пор, что все прекрасно работает. Но когда мой WebApp отправляет запрос на обновление для одного из объектов, я не знаю, как сопоставить StatusId с реальным объектом Status. Короче: я получаю запрос JSON, содержащий обновленный объект Person с измененным StatusId. Есть ли способ получить объект Person, ссылающийся на правильный объект статуса?
Спасибо всем заранее, Флориана