首页 > 解决方案 > .NET API 未插入 SQL Server,但没有错误

问题描述

我有一个 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

我可以逐步执行该 Web api 方法。我的错误发生在 db.SaveChanges 方法中。

错误来自 System.Collections.ListDictionaryInternal 并指出“{Invalid column name 'DailyCrew_id'}”我没有具有该名称的列。我确实有一个名为“daily_crew_id”的列,并且我有一个名为“DailyCrew”的表,其中包含一个“id”字段。'DailyCrew_id' 会是内部列表中的名称吗?我不知道在哪里看或如何解决这个问题。

标签: c#jsonsql-serverasp.net-mvcasp.net-web-api

解决方案


事实证明,EF 不喜欢我用于表和字段的命名约定,因此它无法在键之间建立关系。我将属性注释为 Key 和 Foreign Key,但是在我将属性的命名更改为 EF 喜欢的名称之后,一切正常。


推荐阅读