簡體   English   中英

實體框架正在嘗試在數據庫上查找已刪除的外鍵

[英]Entity framework is trying to find a deleted foreign key on database

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

這是我的模型:

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);
        }
}

錯誤:

“字段列表”中的未知列“ Extent1.FormaPagamento_ID_FormaPagamento”

我已經清理了解決方案,重新創建了數據庫,但沒有任何效果。

我注意到的一個想法是:如果我注釋當前是外鍵的屬性之一,則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; }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM