gpt4 book ai didi

c# - Entity Framework 正在尝试在数据库上查找已删除的外键

转载 作者:行者123 更新时间:2023-11-29 21:22:04 25 4
gpt4 key购买 nike

我有一个实体,它有一个带有导航属性的外键,但我从数据库和我的模型中删除了这个外键以创建另一个外键。现在, Entity Framework 给了我一个错误,说我的模型上缺少旧列。

这是我的模型:

public class CompraVenda
{

public CompraVenda()
{
this.Produtos = new HashSet<CompraVendaProdutoGrade>();
}

public long ID_CompraVenda { get; set; }
public long? ID_CondicaoPagamento { get; set; }
public long? ID_Fornecedor { get; set; }
public long? ID_Cliente { get; set; }
public long? ID_Funcionario { get; set; }
public long? ID_Pedido { get; set; }

public string Codigo { get; set; }
public int Tipo { get; set; }
public DateTime DataCadastro { get; set; }
public DateTime DataConfirmacao { get; set; }
public int Status { get; set; }
public string Observacoes { get; set; }
public decimal ValorTotal { get; set; }
public decimal ValorDesconto { get; set; }
public decimal AcrescimoTotal { get; set; }
public decimal ValorFrete { get; set; }
public int TipoDesconto { get; set; }
public int NumeroProdutos { get; set; }

public virtual CondicaoPagamento CondicaoPagamento { get; set; }
public virtual Fornecedor Fornecedor { get; set; }
public virtual Cliente Cliente { get; set; }
public virtual Funcionario Funcionario { get; set; }
public virtual Pedido Pedido { get; set; }

public virtual ICollection<CompraVendaProdutoGrade> Produtos { get; set; }
}

这是映射类:

public class CompraVendaMap : EntityTypeConfiguration<CompraVenda>
{
public CompraVendaMap()
{

this.ToTable("compravenda", "wildesk");

this.HasKey(t => t.ID_CompraVenda);

this.Property(t => t.ID_CompraVenda).HasColumnName("ID_CompraVenda");
this.Property(t => t.ID_Fornecedor).HasColumnName("ID_Fornecedor");
this.Property(t => t.ID_Cliente).HasColumnName("ID_Cliente");
this.Property(t => t.ID_Funcionario).HasColumnName("ID_Funcionario");
this.Property(t => t.ID_Pedido).HasColumnName("ID_Pedido");
this.Property(t => t.ID_CondicaoPagamento).HasColumnName("ID_CondicaoPagamento");
this.Property(t => t.Codigo).HasColumnName("Codigo");
this.Property(t => t.Tipo).HasColumnName("Tipo");
this.Property(t => t.DataCadastro).HasColumnName("DataCadastro");
this.Property(t => t.DataConfirmacao).HasColumnName("DataConfirmacao");
this.Property(t => t.Status).HasColumnName("Status");
this.Property(t => t.Observacoes).HasColumnName("Observacoes");
this.Property(t => t.ValorTotal).HasColumnName("ValorTotal");
this.Property(t => t.ValorDesconto).HasColumnName("ValorDesconto");
this.Property(t => t.AcrescimoTotal).HasColumnName("AcrescimoTotal");
this.Property(t => t.ValorFrete).HasColumnName("ValorFrete");
this.Property(t => t.TipoDesconto).HasColumnName("TipoDesconto");
this.Property(t => t.NumeroProdutos).HasColumnName("NumeroProdutos");

this.HasOptional(t => t.CondicaoPagamento).WithMany(t => t.ComprasVendas).HasForeignKey(t => t.ID_CondicaoPagamento);
this.HasOptional(t => t.Fornecedor).WithMany(t => t.ComprasVendas).HasForeignKey(t => t.ID_Fornecedor);
this.HasOptional(t => t.Cliente).WithMany(t => t.ComprasVendas).HasForeignKey(t => t.ID_Cliente);
this.HasOptional(t => t.Funcionario).WithMany(t => t.ComprasVendas).HasForeignKey(t => t.ID_Funcionario);
this.HasOptional(t => t.Pedido).WithMany(t => t.ComprasVendas).HasForeignKey(t => t.ID_Pedido);

this.HasMany(t => t.Produtos).WithRequired(t => t.CompraVenda).HasForeignKey(t => t.ID_CompraVenda);
}
}

错误:

Unknown column 'Extent1.FormaPagamento_ID_FormaPagamento' in 'field list'

我已经清理了我的解决方案,重新创建了我的数据库,但没有任何效果。

我注意到的一个想法是:如果我注释当前的外键属性之一,EF 会针对注释的属性给出相同的错误。

EF 是否读取实体架构来查找数据库上的外键?或者,它会缓存模型?

提前致谢。

最佳答案

我发现了这个问题,我会在这里发布给可能有同样问题的人:

我忘记删除 FormaPagamento 上引用 compravenda 的旧集合,该集合未映射,而是设置为虚拟,因此 EF 试图找到一个compravenda 上的属性等效。

我的旧 FormaPagamento 模型代码:

public class FormaPagamento
{

public FormaPagamento()
{
this.ContasPagarReceber = new HashSet<ContaPagarReceber>();
this.Movimentacoes = new HashSet<ContaPagarReceberMovimentacao>();
this.ComprasVendas = new HashSet<CompraVenda>();
this.CondicoesPagamento = new HashSet<CondicaoPagamentoFormaPagamento>();
}

public long ID_FormaPagamento { get; set; }
public string Descricao { get; set; }
public bool IsAtivo { get; set; }
public bool IsSystem { get; set; }
public int? Enum { get; set; }

public virtual ICollection<ContaPagarReceber> ContasPagarReceber { get; set; }
public virtual ICollection<ContaPagarReceberMovimentacao> Movimentacoes { get; set; }

// When I removed this collection, it works.
public virtual ICollection<CompraVenda> ComprasVendas { get; set; }

public virtual ICollection<CondicaoPagamentoFormaPagamento> CondicoesPagamento { get; set; }

}

关于c# - Entity Framework 正在尝试在数据库上查找已删除的外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35675069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com