EntityCommandExecutionException:无效的列名称'Entity_Id'

时间:2014-01-15 05:32:46

标签: .net entity-framework

背景

我正在使用Entity Framework的Fluent API将实体映射到数据库。

实体

public class Ticket
{
    public int Id { get; set; }

    public virtual SalesOrder SalesOrder { get; set; }
    public int SalesOrderId { get; set; }

    public virtual ICollection<TicketLine> Lines { get; set; }
}

public class SalesOrder
{
    public int Id { get; set; }
    public virtual ICollection<Ticket> Tickets { get; set; }
}

public class TicketLine
{
    public int Id { get; set; }

    public Ticket Ticket { get; set; }
    public int TicketId { get; set; }
}

映射

public class TicketMap : EntityTypeConfiguration<Ticket>
{
    public TicketMap() {}
}

public class SalesOrderMap : EntityTypeConfiguration<SalesOrder>
{
    public SalesOrderMap()
    {
        HasMany(t => t.Tickets)
            .WithRequired(t => t.SalesOrder)
            .HasForeignKey(t => t.SalesOrderId);
    }
}

public class TicketLineMap : EntityTypeConfiguration<TicketLine>
{
    public TicketLineMap() {}
}

问题

当我运行与Ticket相关的查询时,我会收到以下EntityCommandExecutionException

  

列名称'Ticket_Id'无效。

我尝试过什么

  1. 确保引用Ticket的所有实体都已定义其关系
  2. 确保没有任何重复的导航属性
  3. 在此网站上查看此例外的其他答案

1 个答案:

答案 0 :(得分:1)

问题原来是我忘了告诉实体框架如何将TicketTicketLine联系起来。

我通过配置关系来解决它:

HasMany(t => t.Lines)
    .WithRequired(t => t.Ticket)
    .HasForeignKey(t => t.TicketId);