Я немного новичок в ядре Dotnet WebApi и Entity Framework, так что извините, если мне не хватает чего-то сверхъестественного.
У меня есть методы PUT веб-API для самостоятельного обновления модели, иликак дочерний элемент родителя - предоставив полную модель родителя с дочерним элементом.
Проблема, с которой я столкнулся, заключается в том, что я пометил идентификатор внешнего ключа как необходимый с помощью DataAnnotations [обязательно] плюс [Range], потому что без него PUT уровня ребенка будет бесполезен.Но я хотел бы принять его без указания родительского идентификатора, если он присоединен к родителю в JSON.
Например:
Для класса
public class ParentData
{
public id id {get; set;}
public string parentProperty {get; set;}
public ChildData childData {get; set;}
}
public class ChildData
{
public int childId {get; set;}
[Required]
public int parentId {get; set;}
public string anotherAttribute{get; set;}
[JsonIgnore]
public ParentData parentData {get; set;}
}
Это можетвсе будет в порядке:
{
"childId":123,
"parentId":234,
"anotherAttribute":"Bar"
}
Но это не удастся, потому что parentId отсутствует:
{
"id":234,
"parentProperty":"Foo",
"childData":
{
"childId":"123",
"anotherAttribute":"Bar"
}
}
Учитывая, что у меня есть беглая карта EF (entityTypeBuilder (). HasOne.WithOne (). HasForeignKey()) есть ли способ, которым я могу просто установить родительский идентификатор, автоматически позволяющий считать модель действительной?
Я думал, что мог бы сделать что-то внутри операции SET для объекта ChildData, которая, вероятно, предшествуетпроверка модели в конвейере, но это выглядит чрезмерно по сравнению с сопоставлением EF и аннотацией данных.
Обречен ли я задавать свойства вручную или создавать собственный валидатор и не использовать здесь аннотации данных?