我有一个包含三个主表和外键关联表的数据库。
我正在使用Web API和Entity Framework来自动生成方法。我成功地做到了这一点。但我想分别插入带有外键的表。
目前,我能够为主表获取一个JSON
对象,该对象具有带外键的表的主键和导航属性。
我能够访问楼层数据库的json对象,并相应地访问Meter和Router。所以,我有一个帖子方法“/ api / floorinfoes”与POST。但是,该怎么做,如果我想分别插入到RouterInfo表和MeterInfo表.Eg:如果我想在MeterInfoes表中插入一行,那么如何继续。
如果要在MeterInfoes表中插入一行。
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控制器。