3

我已经有这个问题大约一天了,我已经搜索并发现他们的解决方案存在类似的问题,但无法解决这个问题。

我已经在 Teams 示例中看到了这一点,所以我也会这样做。我有一个Team

public abstract class Team
{
   [Key]
   public int IdTeam { get; set; }
   public string Name { get; set; }
   public string Description { get; set; }
}

我还有一个Match对象:

public class Match
{
   [Key]
   public int IdMatch { get; set; }
   [ForeignKey("HomeTeam")]
   public int IdHomeTeam { get; set; }
   [ForeignKey("AwayTeam")]
   public int IdAwayTeam { get; set; }

   public virtual Team HomeTeam { get; set; }
   public virtual Team AwayTeam { get; set; }
}

每当我尝试访问任一团队的名称时,都会出现Invalid column name Team_TeamId错误。我猜这与 EF 和未正确映射外键有关。我还看到其他人使用 ICollections,但我认为在这种情况下我不需要它们。

4

1 回答 1

1

您必须在OnModelCreating方法中解决此问题。实体框架似乎无法识别外键,因此您必须专门指定它。

public class Entities : DbContext
{
    ...

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Match>()
            .HasRequired(b => b.AwayTeam)
            .WithMany()
            .HasForeignKey(b => b.IdAwayTeam);
        modelBuilder.Entity<Match>()
            .HasRequired(b => b.HomeTeam)
            .WithMany()
            .HasForeignKey(b => b.IdHomeTeam);
    }
}

有关代码的更多信息,请首先OnModelCreating检查:http: //msdn.microsoft.com/en-us/library/system.data.entity.dbcontext.onmodelcreating (v=vs.103).aspx

于 2013-05-22T22:38:06.527 回答