MERGE'附近的语法不正确实体框架核心

时间:2018-01-30 14:08:30

标签: c# asp.net-core entity-framework-core

尝试创建一个有几个地址的客户端时遇到问题。

public class Client
{
    public int Id { get; set; }
    public string Name{ get; set; }
    public string Lastname{ get; set; }
    public int DNI { get; set; }
    public List<Phones> Phones{ get; set; }
}

public class Phone
{
    [Key]
    public int IdPhone { get; set; }
    public int Number{ get; set; }
}

public Client Create(Client client)
{
    if (_context.Client.Any(x => x.DNI == cliente.DNI))
        throw new AppException("Username " + cliente.DNI + " is already taken");

    _context.Cliente.Add(client);
    _context.Phones.AddRange(client.Phones);
    _context.SaveChanges();

    return client;
}

例外是:

  

Microsoft.EntityFrameworkCore.DbUpdateException:&#39;更新条目时发生错误。有关详细信息,请参阅内部异常。&#39;

     

SqlException:&#39; MERGE&#39;

附近的语法不正确
{
"name": "Franco",
"lastname": "Pachue",
"dni": 55555555,
"phones": [
    {
        "number": "4444444"
    }
]

}

1 个答案:

答案 0 :(得分:0)

不要使用AddRange。 只需将ClientId添加到Phone实体(假设一部手机只属于一个客户端)。添加客户端后,手机将被保存。

>>> np.allclose(new_price(A, B, [ 84, 149, 500]), np.array([1.0, 3.0, 5.0]),
                atol=1e-14, rtol=1e-14)
False