Post 使用 Entity Framework 请求与 Web api 中的主键和外键关联的数据库
Post request to database associated with primary and foreign key in web api using Entity Framework
我有一个包含三个 table 主键和外键关联的数据库。
我正在使用 Web API 和 Entity Framework 来自动生成方法。我已经成功地做到了这一点。但是我想单独插入一个带有外键的table。
目前,我能够为主要 table 获取一个 JSON
对象,它具有主键和带有外键的 table 的导航属性。
我创建了 Web api 使用自动生成的读写操作方法,例如 .
我能够访问楼层数据库的 json 对象,并相应地访问 Meter 和 Router 的对象。所以,我有一个 post 方法“/api/floorinfoes”和 POST。
但是,如果我想分别插入到 RouterInfo table 和 MeterInfo table 中,该怎么办。例如:如果我想在 MeterInfoes table 中插入一行,那么如何进行.
如果要在 MeterInfoes 中插入一行 Table。
public class MeterInfo
{
[Key]
public int MeterId { get; set; }
public string MeterName { get; set; }
public int? FloorId { get; set; }
[ForeignKey("FloorId")]
public FloorInfo FloorInfo { get; set; }
}
将您的实体添加到 DbContext(如果尚未完成)
public class DbContext : IdentityDbContext<IdentityUser>
{
public DbSet<FloorInfo> FloorInfos { get; set; }
public DbSet<MeterInfo> MeterInfos { get; set; }
public DbSet<RouterInfo> RouterInfos { get; set; }
}
创建一个新的控制器 MeterInfoController 或使用脚手架自动生成
public class MeterInfoController : ApiController
{
public IHttpActionResult Post(MeterInfo meterInfo)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
db.MeterInfo.Add(meterInfo);
db.SaveChanges();
return Ok(meterInfo);
}
}
要使用此端点,例如:
Url : /api/MeterInfo
如果您知道 FloorId
Post Data : {"MeterId": 1, "MeterName" : "Test" , "FloorId" : 10 }
如果您不知道 FloorId,但请确保 MeterInfo 中的 FloorId 可以为空
Post Data: {"MeterId": 1, "MeterName" : "Test"}
我认为答案是为 MeterInfo 和 RouterInfo 自动生成 API 控制器。
我有一个包含三个 table 主键和外键关联的数据库。
我正在使用 Web API 和 Entity Framework 来自动生成方法。我已经成功地做到了这一点。但是我想单独插入一个带有外键的table。
目前,我能够为主要 table 获取一个 JSON
对象,它具有主键和带有外键的 table 的导航属性。
我创建了 Web api 使用自动生成的读写操作方法,例如 .
我能够访问楼层数据库的 json 对象,并相应地访问 Meter 和 Router 的对象。所以,我有一个 post 方法“/api/floorinfoes”和 POST。 但是,如果我想分别插入到 RouterInfo table 和 MeterInfo table 中,该怎么办。例如:如果我想在 MeterInfoes table 中插入一行,那么如何进行.
如果要在 MeterInfoes 中插入一行 Table。
public class MeterInfo
{
[Key]
public int MeterId { get; set; }
public string MeterName { get; set; }
public int? FloorId { get; set; }
[ForeignKey("FloorId")]
public FloorInfo FloorInfo { get; set; }
}
将您的实体添加到 DbContext(如果尚未完成)
public class DbContext : IdentityDbContext<IdentityUser>
{
public DbSet<FloorInfo> FloorInfos { get; set; }
public DbSet<MeterInfo> MeterInfos { get; set; }
public DbSet<RouterInfo> RouterInfos { get; set; }
}
创建一个新的控制器 MeterInfoController 或使用脚手架自动生成
public class MeterInfoController : ApiController
{
public IHttpActionResult Post(MeterInfo meterInfo)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
db.MeterInfo.Add(meterInfo);
db.SaveChanges();
return Ok(meterInfo);
}
}
要使用此端点,例如:
Url : /api/MeterInfo
如果您知道 FloorId
Post Data : {"MeterId": 1, "MeterName" : "Test" , "FloorId" : 10 }
如果您不知道 FloorId,但请确保 MeterInfo 中的 FloorId 可以为空
Post Data: {"MeterId": 1, "MeterName" : "Test"}
我认为答案是为 MeterInfo 和 RouterInfo 自动生成 API 控制器。