Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何通过主键删除记录?使用WebAPI2。得到404_C#_Entity Framework_Asp.net Web Api - Fatal编程技术网

C# 如何通过主键删除记录?使用WebAPI2。得到404

C# 如何通过主键删除记录?使用WebAPI2。得到404,c#,entity-framework,asp.net-web-api,C#,Entity Framework,Asp.net Web Api,我不熟悉使用web api。。我正在使用一些角度代码。添加和列出数据可以正常工作,但不能删除数据。我尝试了stackoverflow添加web配置的很多东西,我的cors设置为允许所有站点,因为这只是为了测试 这是我的密码。。我不知道我错过了什么 [HttpDelete] // I also tried HttpPut [Route("products/RemProduct")] public string RemoveProduct(int prodId) { if (p

我不熟悉使用web api。。我正在使用一些角度代码。添加和列出数据可以正常工作,但不能删除数据。我尝试了stackoverflow添加web配置的很多东西,我的cors设置为允许所有站点,因为这只是为了测试

这是我的密码。。我不知道我错过了什么

[HttpDelete]       // I also tried HttpPut 
[Route("products/RemProduct")]
public string RemoveProduct(int prodId)
{
    if (prodId != null)
    {
        using (ProductContext dataContext = new ProductContext())  // I tried removing this using
        {
            // this was the my original code
            //var removeProd = new ProductTest { Id = prodId };
            //dataContext.ProductData.Remove(removeProd);

            // used this as my alternative
            dataContext.Database.ExecuteSqlCommand("DELETE FROM ProductTest where Id = " + prodId); 

            //dataContext.SaveChanges();
            return "Product Removed";
        }
    }

    return "Invalid";
}
这是角度服务部件

    this.DeleteProd = function (prodId) {
    var response = $http({
        method: "DELETE",
        url: "https://apirepo.leofaj.org/products/RemProduct", 
         params: {
             Id: prodId
         },
      //  data:prodId,
        //dataType:"json"
    });
    return response;
}
这是我尝试的web配置

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">  <-- added this too.
    </modules>
    <security>
        <requestFiltering>
            <verbs>
                <add verb="Delete" allowed="true" /> <<-- added this
            </verbs>
        </requestFiltering>
    </security>
</system.webServer>


您需要跟踪要删除的条目,因此请尝试使用此

using (ProductContext dataContext = new ProductContext())
            {
                var removeProd = dataContext.ProductData.Where(a => a.Id == prodId).FirstOrDefault();
                dataContext.ProductData.Remove(removeProd);

                dataContext.SaveChanges();
                return "Product Removed";
            }
还需要匹配查询参数

this.DeleteProd = function (prodId) {
    var response = $http({
        method: "DELETE",
        url: "https://apirepo.leofaj.org/products/RemProduct", 
         params: {
             prodId: prodId
         },
      //  data:prodId,
        //dataType:"json"
    });
    return response;
}

您需要跟踪要删除的条目,因此请尝试使用此

using (ProductContext dataContext = new ProductContext())
            {
                var removeProd = dataContext.ProductData.Where(a => a.Id == prodId).FirstOrDefault();
                dataContext.ProductData.Remove(removeProd);

                dataContext.SaveChanges();
                return "Product Removed";
            }
还需要匹配查询参数

this.DeleteProd = function (prodId) {
    var response = $http({
        method: "DELETE",
        url: "https://apirepo.leofaj.org/products/RemProduct", 
         params: {
             prodId: prodId
         },
      //  data:prodId,
        //dataType:"json"
    });
    return response;
}

查询参数的名称应与操作的参数完全相同

url: "https://apirepo.leofaj.org/products/RemProduct", 
params: {
    prodId: prodId      // <-- Change this
},
url:https://apirepo.leofaj.org/products/RemProduct", 
参数:{

prodId:prodId/查询参数的名称应与操作的参数完全相同

url: "https://apirepo.leofaj.org/products/RemProduct", 
params: {
    prodId: prodId      // <-- Change this
},
url:https://apirepo.leofaj.org/products/RemProduct", 
参数:{

prodId:prodId/使用与控制器/api上使用的参数相同的参数


就像上面的答案一样,将prodId作为变量传递,那么源值就无关紧要了。

使用与控制器/api相同的参数


像上面的答案一样,将prodId作为变量传递,那么源值就无关紧要了。

如果(prodId!=null)
,OT的可能重复-这将始终是真的,
int
不能为null。@ste fu检查我的答案。.我使用了那个解决方案。.我的问题是它仍然不起作用。OT
的可能重复如果(prodId!=null)
-这将始终是真的,
int
不能为null。@ste fu检查我的答案。.我使用了该解决方案。.我的问题是它仍然不起作用。