如何获取具有一对多关系的 Web API
How to get Web API with one to many relationship
我有 3 个实体。实体传感器、实体 tanaman 和实体 tanamanhassensor。
我想从 api tanamanhassensor 使用 json jquery 制作图表。如何显示图形?如果我使用我的 json,api http://xxxxx/api/tanaman_has_sensor 找不到
我的实体是这样的:
public partial class Tanaman_has_Sensor
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public Tanaman_has_Sensor()
{
this.Tanaman_has_Sensor_has_Jadwal = new HashSet<Tanaman_has_Sensor_has_Jadwal>();
}
public int Tanaman_IdTanaman { get; set; }
public int Sensor_IdSensor { get; set; }
public double NilaiSensor { get; set; }
public System.DateTime WaktuSensor { get; set; }
public string Lokasi { get; set; }
public virtual Sensor Sensor { get; set; }
public virtual Tanaman Tanaman { get; set; }
public virtual ICollection<Tanaman_has_Sensor_has_Jadwal> Tanaman_has_Sensor_has_Jadwal { get; set; }
}
这是我的控制器
public class TanamanhasSensorController : ApiController
{
private SmartGreenHouseEntities db = new SmartGreenHouseEntities();
// GET: api/TanamanhasSensor
public IQueryable<Tanaman_has_Sensor> GetTanaman_has_Sensor()
{
return db.Tanaman_has_Sensor;
}
// GET: api/TanamanhasSensor/5
[ResponseType(typeof(Tanaman_has_Sensor))]
public async Task<IHttpActionResult> GetTanaman_has_Sensor(int id)
{
Tanaman_has_Sensor tanaman_has_Sensor = await db.Tanaman_has_Sensor.FindAsync(id);
if (tanaman_has_Sensor == null)
{
return NotFound();
}
return Ok(tanaman_has_Sensor);
}
}
申请json
[{
"Tanaman_IdTanaman": 1,
"Sensor_IdSensor": 2,
"NilaiSensor": 3.1,
"WaktuSensor": "2016-11-19T07:38:42.519263+07:00",
"Lokasi": "sample string 5",
"Sensor": {
"$id": "1",
"IDSensor": 1,
"NamaSensor": "sample string 2",
"Tanaman_has_Sensor": [
{
"Tanaman_IdTanaman": 1,
"Sensor_IdSensor": 2,
"NilaiSensor": 3.1,
"WaktuSensor": "2016-11-19T07:38:42.519263+07:00",
"Lokasi": "sample string 5",
"Sensor": {
"$ref": "1"
}]
我的json
$.ajax({
type: 'GET',
url: "http://xxxxx/api/tanaman_has_sensor",
dataType: 'json',
async: false,
contentType: "application/json; charset=utf-8",
data: dd,
假设 Web 的默认基于约定的路由 API 2
// Convention-based routing.
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
你应该打电话给
url: "http://xxxxx/api/TanamanhasSensor
按照约定,路由 table 匹配控制器名称减去 Convention
因此 TanamanhasSensorController
将映射到 TanamanhasSensor
甚至你的控制器也在评论中展示了这一点
public class TanamanhasSensorController : ApiController {
private SmartGreenHouseEntities db = new SmartGreenHouseEntities();
// GET: api/TanamanhasSensor
[HttpGet]
public IQueryable<Tanaman_has_Sensor> GetTanaman_has_Sensor() {
return db.Tanaman_has_Sensor;
}
// GET: api/TanamanhasSensor/5
[HttpGet]
[ResponseType(typeof(Tanaman_has_Sensor))]
public async Task<IHttpActionResult> GetTanaman_has_Sensor(int id) {
Tanaman_has_Sensor tanaman_has_Sensor = await db.Tanaman_has_Sensor.FindAsync(id);
if (tanaman_has_Sensor == null) {
return NotFound();
}
return Ok(tanaman_has_Sensor);
}
}
我有 3 个实体。实体传感器、实体 tanaman 和实体 tanamanhassensor。 我想从 api tanamanhassensor 使用 json jquery 制作图表。如何显示图形?如果我使用我的 json,api http://xxxxx/api/tanaman_has_sensor 找不到
我的实体是这样的:
public partial class Tanaman_has_Sensor
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public Tanaman_has_Sensor()
{
this.Tanaman_has_Sensor_has_Jadwal = new HashSet<Tanaman_has_Sensor_has_Jadwal>();
}
public int Tanaman_IdTanaman { get; set; }
public int Sensor_IdSensor { get; set; }
public double NilaiSensor { get; set; }
public System.DateTime WaktuSensor { get; set; }
public string Lokasi { get; set; }
public virtual Sensor Sensor { get; set; }
public virtual Tanaman Tanaman { get; set; }
public virtual ICollection<Tanaman_has_Sensor_has_Jadwal> Tanaman_has_Sensor_has_Jadwal { get; set; }
}
这是我的控制器
public class TanamanhasSensorController : ApiController
{
private SmartGreenHouseEntities db = new SmartGreenHouseEntities();
// GET: api/TanamanhasSensor
public IQueryable<Tanaman_has_Sensor> GetTanaman_has_Sensor()
{
return db.Tanaman_has_Sensor;
}
// GET: api/TanamanhasSensor/5
[ResponseType(typeof(Tanaman_has_Sensor))]
public async Task<IHttpActionResult> GetTanaman_has_Sensor(int id)
{
Tanaman_has_Sensor tanaman_has_Sensor = await db.Tanaman_has_Sensor.FindAsync(id);
if (tanaman_has_Sensor == null)
{
return NotFound();
}
return Ok(tanaman_has_Sensor);
}
}
申请json
[{
"Tanaman_IdTanaman": 1,
"Sensor_IdSensor": 2,
"NilaiSensor": 3.1,
"WaktuSensor": "2016-11-19T07:38:42.519263+07:00",
"Lokasi": "sample string 5",
"Sensor": {
"$id": "1",
"IDSensor": 1,
"NamaSensor": "sample string 2",
"Tanaman_has_Sensor": [
{
"Tanaman_IdTanaman": 1,
"Sensor_IdSensor": 2,
"NilaiSensor": 3.1,
"WaktuSensor": "2016-11-19T07:38:42.519263+07:00",
"Lokasi": "sample string 5",
"Sensor": {
"$ref": "1"
}]
我的json
$.ajax({
type: 'GET',
url: "http://xxxxx/api/tanaman_has_sensor",
dataType: 'json',
async: false,
contentType: "application/json; charset=utf-8",
data: dd,
假设 Web 的默认基于约定的路由 API 2
// Convention-based routing.
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
你应该打电话给
url: "http://xxxxx/api/TanamanhasSensor
按照约定,路由 table 匹配控制器名称减去 Convention
因此 TanamanhasSensorController
将映射到 TanamanhasSensor
甚至你的控制器也在评论中展示了这一点
public class TanamanhasSensorController : ApiController {
private SmartGreenHouseEntities db = new SmartGreenHouseEntities();
// GET: api/TanamanhasSensor
[HttpGet]
public IQueryable<Tanaman_has_Sensor> GetTanaman_has_Sensor() {
return db.Tanaman_has_Sensor;
}
// GET: api/TanamanhasSensor/5
[HttpGet]
[ResponseType(typeof(Tanaman_has_Sensor))]
public async Task<IHttpActionResult> GetTanaman_has_Sensor(int id) {
Tanaman_has_Sensor tanaman_has_Sensor = await db.Tanaman_has_Sensor.FindAsync(id);
if (tanaman_has_Sensor == null) {
return NotFound();
}
return Ok(tanaman_has_Sensor);
}
}