.NET API未插入SQL Server,但没有错误

时间:2019-10-04 17:12:09

标签: c# json sql-server asp.net-mvc asp.net-web-api

我有一个ASP.NET MVC应用程序,我添加了Web API以便接收Json并将内容插入SQL Server。在移动Cordova应用程序上以及在Rest Api测试中,我的Http状态为200。但是,没有插入任何记录。

这是课程,DBContext

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

   //all the code....
}

我创建了此类来处理Http请求中的json正文。

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();
}

这种模式看起来还好吗?我尝试从高级REST客户端手动执行POST,但仍然看不到插入内容或错误。

这是我的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 :(得分:0)

事实证明,EF不喜欢我在表和字段中使用的命名约定,因此它无法在键之间建立关系。我曾将属性分别标注为“键”和“外键”,但是在将属性的命名更改为EF所喜欢的名称之后,一切都正常了。

答案 1 :(得分:-3)

内部发生什么

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

我相信您已经在

中实现了数据库插入逻辑
  

SaveChanges()

在您的方法中,总是返回Http状态为200的原因总是返回

  

返回Ok();

请添加SaveChanges()方法实现