3

私はこれで約1日問題を抱えていました。解決策で同様の問題を検索して見つけましたが、これを修正できませんでした.

これは 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と外部キーが正しくマップされていないことに関係があると思います。他の人が ICollection を使用しているのも見たことがありますが、この場合は必要ないと思います。

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 に答える