2016-02-27 53 views
0

我有一個實體,它具有導航屬性的外鍵,但是我從數據庫和模型中刪除了這個外鍵以創建另一個外鍵。現在,實體框架給了我一個錯誤,說我的模型中缺少舊列。實體框架試圖在數據庫上找到已刪除的外鍵

這是我的模型:

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是否讀取實體模式以在數據庫中查找外鍵?或者,它會讓模型緩存?

在此先感謝。

回答

0

我發現這個問題,我會後這裏誰可能有同樣的問題:

我忘了刪除就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; } 

}