.NET API не вставляется в SQL Server, но ошибок нет - PullRequest
3 голосов
/ 04 октября 2019

У меня есть приложение ASP.NET MVC, к которому я добавил веб-API для получения Json и вставки содержимого в SQL Server. В мобильном приложении Cordova и в тесте Rest Api я получаю статус Http 200. Однако запись не вставлена.

Вот класс и DBContext:

public class MobileController : ApiController
{
    private PTSContext db = new PTSContext();

   //all the code....
}

Я создал этот класс для обработки тела json из запроса Http.

public class DailyCrewActivityJson
{
    [JsonProperty("api_id")]
    public string api_id { get; set; }

    [JsonProperty("api_daily_crew_id")]
    public string api_daily_crew_id { get; set; }

    [JsonProperty("api_contract_id")]
    public string api_contract_id { get; set; }

    [JsonProperty("api_contract_task_id")]
    public string api_contract_task_id { get; set; }

}

У меня есть этот класс для обработки вставки.

[HttpPost]
[Route("api/mobile/insertdailycrewactivity")]
public IHttpActionResult InsertDailyCrewActivity([FromBody] DailyCrewActivityJson crewActivityJson)
{
    DailyCrewActivity d = new DailyCrewActivity();
    d.id = crewActivityJson.api_id;
    d.daily_crew_id = crewActivityJson.api_daily_crew_id;
    d.contract_id = crewActivityJson.api_contract_id;
    d.contract_task_id = crewActivityJson.api_contract_task_id;

    db.DailyCrewActivities.Add(d);
    db.SaveChanges();

    return Ok();
}

Этот шаблон выглядит нормально? Я пытаюсь вручную выполнить POST из расширенного клиента REST, но у меня все еще не появляется вставка или ошибка.

Вот так выглядит мой URL и мое тело json:

https://<my url.com>/api/mobile/insertdailycrewactivity

JSON:

{
  "api_id": "74849939162039260-1569958529936",
  "api_daily_crew_id": "21273665486597612-1569862557128",
  "api_contract_id": "eef03be7-82b9-4066-93d9-cb64d346481c",
  "api_contract_task_id": "00407436-2450-4f40-9323-29860232e8f7",
}

РЕДАКТИРОВАТЬ 10/5/2019 Я переместил сайт локально и восстановил базу данных SQL в своем локальном SQL Express. Когда я запускаю сайт и звоню

http://localhost/api/mobile/insertdailycrewactivity

, я могу пройти через этот метод веб-API. Мои ошибки происходят в методе db.SaveChanges.

Ошибка происходит из System.Collections.ListDictionaryInternal и сообщает "{Неверное имя столбца 'DailyCrew_id'}" У меня нет столбца с этимимя. У меня есть столбец с именем daily_crew_id, и у меня есть таблица DailyCrew с полем id. Будет ли 'DailyCrew_id' имя во внутреннем списке? Я не знаю, где искать или как это исправить.

Ответы [ 2 ]

0 голосов
/ 15 октября 2019

Оказалось, что EF не нравились соглашения об именах, которые я использовал для таблиц и полей, и поэтому он не мог установить отношения между ключами. У меня были аннотированные свойства «Ключ» и «Внешний ключ», но после того, как я изменил наименование свойств на то, что понравилось в EF, все заработало.

0 голосов
/ 04 октября 2019

Что происходит внутри

 db.DailyCrewActivities.Add(d);
 db.SaveChanges();

Я полагаю, вы внедрили логику вставки в БД в

SaveChanges ()

Причина, по которой выПолучая всегда Http-статус, так как 200 в вашем методе вы всегда возвращаете

return Ok ();

пожалуйста, добавьте реализацию метода SaveChanges ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...