Asp.net核心2 webapi帖子相关数据插入

时间:2018-01-19 10:56:25

标签: asp.net-core asp.net-core-webapi

如何告诉EF Core不在帖子上插入相关数据?

这是我对于Deposito和Sucursal的模型

public class IDeposito
    {
        [Key]
        public int Id { get; set; }
        public string Descrip { get; set; }
        public string Alias { get; set; }
        public Boolean Activo { get; set; }
        public ISucursal Sucursal { get; set; }
    }
public class ISucursal
{

    [Key]
    public int Id { get; set; }
    public string Descrip { get; set; }
    public string Alias { get; set; }
    public Boolean Activo { get; set; }
}

这是我的控制器

    [HttpPost]
    public IActionResult Create([FromBody] IDeposito postData)
    {
        if (postData == null)
        {
            return BadRequest();
        }
        _context.Depositos.Add(postData);
        _context.SaveChanges();

        return CreatedAtRoute("GetDeposito", new { ID = postData.Id }, postData);
    }

当我发布这个模型时    {         " Descrip":" Neuquen",         " Alias":" NQN",         " Activo":是的,         " Sucursal":{             " Id":1,             " Descrip":" Comodoro Rivadavia",             " Alias":" CR",             " Activo":是的         }     }

它失败了,因为它试图插入表格" Sucursal&#34 ;,虽然已经存在" Sucursal" id:1。

无论如何,我可以告诉EF Core不更新相关表吗?非常感谢你

1 个答案:

答案 0 :(得分:1)

如果您希望将新IDeposito连接到Id = 1的现有ISucursal,则使用第一种方法:

postData.Sucursal =  _context.Sucursals.Find(postData.Sucursal.Id);
_context.Depositos.Add(postData);
_context.SaveChanges();

return CreatedAtRoute("GetDeposito", new { ID = postData.Id }, postData);

如果你想只添加IDeposito而没有任何sucursal:

postData.Sucursal = null;
_context.Depositos.Add(postData);
_context.SaveChanges();

return CreatedAtRoute("GetDeposito", new { ID = postData.Id }, postData);