【问题标题】:Get a table data from database using WebApi & Entity Framework 6.XX使用 WebApi & Entity Framework 6.XX 从数据库中获取表数据
【发布时间】:2017-01-23 23:15:07
【问题描述】:

我像这样从数据库表中创建了一个实体数据模型。

然后在 WebApiConfig.cs 中添加 4 行代码从响应中获取 json 数据。

var json = config.Formatters.JsonFormatter;
        json.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.Objects;
        json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
        config.Formatters.Remove(config.Formatters.XmlFormatter);

然后我创建了一个名为 importController 的控制器(具有读/写操作的 Web API 2 控制器)。

然后我添加了此代码来添加和检索数据库中的数据。但不工作。

    CodeXenETSEntities db = new CodeXenETSEntities();  

    [HttpPost]
    [ActionName("pushlocation")]
    // POST: api/pushlocation  
    public HttpResponseMessage pushlocation( int userid,decimal longitude, decimal latitude , TimeSpan time )
    {
        user_locations ulog = new user_locations();
        ulog.user_id = userid;
        ulog.lon = longitude;
        ulog.lat = latitude;
        ulog.time = time;
        db.user_locations.Add(ulog);
        db.SaveChanges();
        return Request.CreateResponse(HttpStatusCode.Accepted, "Successfully Created");
    }


    [HttpGet]
    [ActionName("pulllocation")]
    // GET: api/pulllocation/5  
    public HttpResponseMessage pulllocation(int userid, decimal longitude, decimal latitude, TimeSpan time)
    {

        db.user_locations.ToList();
        return Request.CreateResponse(HttpStatusCode.Accepted, "Success");
    }

这是输出:

数据库数据:

【问题讨论】:

  • 我相信您的网址应该类似于localhost:57715/api/import/pulllocation
  • 另外,WebApiConfig.cs 中的路由配置可能不允许无参数调用,因为您在 pulllocation 方法中指定了四个参数
  • @AndyArndt 感谢您的建议。但仍然无法正常工作。还有其他想法或建议吗?
  • @sly 那该怎么办?请给我建议

标签: c# sql-server entity-framework-6 asp.net-web-api2


【解决方案1】:

三件事:

1)WebApiConfig.cs 中使用routeTemplate: "api/{controller}/{action}/{id}"

2)importController 中将public HttpResponseMessage pulllocation(int userid, decimal longitude, decimal latitude, TimeSpan time) 改为 public HttpResponseMessage pulllocation()

3) 在浏览器地址栏中使用http://localhost:57715/api/{controller name}/pulllocation。在你的情况下http://localhost:57715/api/import/pulllocation

希望能解决

【讨论】:

  • 谢谢伙计。你救了我:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-16
  • 1970-01-01
  • 2019-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多