EntityFramework正在插入一个新的寄存器,而不是设置关系的id

本文关键字:寄存器 id 关系 设置 插入 一个 EntityFramework | 更新日期: 2023-09-27 18:01:00

我正在开发一个允许用户发布问题的网站。

我有3张桌子:

  • 岗位;
    • PostId
    • 用户ID
  • 城市;
    • 城市Id
    • 城市名称
  • PostService(一个综合表格(;
    • PostId(与Post相关(
    • CityId(与城市相关(
    • 其他领域

当我保存Post时,系统会插入一个新的Post,处理PostService和Post之间的关系(通过PostId(,但它应该将CityId设置为PostService,但相反,它会创建一个新城市,并处理与PostService的关系。

在这里,我们将选定的城市设置为邮政服务:

orcamento.Cidades = db.Cidades.Where(c => c.CidNome.Trim().ToLower() == orcamento.Cidades.CidNome.Trim().ToLower()).FirstOrDefault();

在这里,我们坚持Post:

Post post = new Post();
post.PosData = DateTime.Now;
post.Usuarios = db.Usuarios.Where(u => u.UsuEmail == User.Identity.Name).FirstOrDefault();
post.PostOrcamentoServico.Add(orcamento);
db.Post.Add(post);
db.SaveChanges();

为什么要创建一个新的城市,而不是将CityID设置为PostService?

EntityFramework正在插入一个新的寄存器,而不是设置关系的id

要解决此问题,请使用相同的上下文事务。

以下代码在另一个上下文中

orcamento.Cidades = db.Cidades.Where(c => c.CidNome.Trim().ToLower() == orcamento.Cidades.CidNome.Trim().ToLower()).FirstOrDefault();