Позвольте мне начать с того, что, хотя я не новичок в программировании, я довольно плохо знаком с C #.Так что, если есть лучший способ полностью создать мое действие, я открыт для него (в C # много времени было потрачено, просто «пробуя что-то»).Мое действие работает, хотя и возвращает то, что мне нужно.Моя проблема на самом деле в тесте.
У меня есть действие, которое принимает связанные данные, где элемент является родителем других данных.Возвращается объект сущности со связанными данными, вложенными в него после того, как все они были сохранены в базе данных и развернуты вложенные данные.
У меня возникли проблемы с приведением IHttpActionResult в одном из моих тестов.У меня есть действие с этой подписью:
public IHttpActionResult InsertDeep(ODataActionParameters parameters)
Это на самом деле возвращает значение, созданное путем вызова этого:
protected IHttpActionResult Single<T>(IQueryable<T> itemQuery)
{
return Content(HttpStatusCode.OK, System.Web.Http.SingleResult.Create(itemQuery));
}
Я возвращаю запрос с одним результатом, чтобы я мог автоматически расширять некоторые свойства навигацииобъект сущности.Это означает, что вызовы API не должны добавлять опцию $ expand, что хорошо, так как это действие всегда должно возвращать полные данные.
Из моего исследования я знаю, что для проверки содержимогорезультат, я должен разыграть его:
IHttpActionResult inserted = controller.InsertDeep(p);
var contents = inserted as OkNegotiatedContentResult<someType>;
Но каждый тип, который я использовал, устанавливает значение null.Тип вставки:
"System.Web.Http.Results.NegotiatedContentResult`1[System.Web.Http.SingleResult`1[flowApp.Models.Item]]"
Я пробовал:
<SingleResult<Item>>
<List<Item>>
<Item>
<IEnumerable<Item>>
и многие другие комбинации.Кажется, ни один из них не работает.
Любая помощь очень ценится.