1

Entity Framework 5 の使用について少し混乱しています。エンティティ用に 2 つのインターフェイスを作成しました。

インターフェース

次に、次のようなクラスを作成しました。

語:

public class Word : IWord
{
  [Key]
  [Required]
  public int WordId { get; set; }

  [Required]
  public string Tag { get; set; }

  [Required]
  public string Translation { get; set; }

  [Required]
  public char Language { get; set; }

  public string Abbreviation { get; set; }

  //Foreign Key
  public int VocabularyId { get; set; }

  //Navigation
  public virtual IVocabulary Vocabulary { get; set; }
}

単語:

public class Vocabulary : IVocabulary
{
  [Key]
  [Required]
  public int VocabularyId { get; set; }

  [Required]
  public string Name { get; set; }

  public virtual List<IWord> Words { get; set; }
}

そして最後に、私の中で私DataContextは書いた:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
  modelBuilder.Entity<Word>()
    .HasRequired(w => w.Vocabulary)
    .WithMany(v => v.Words)
    .HasForeignKey(w => w.VocabularyId)
    .WillCascadeOnDelete(false);

  base.OnModelCreating(modelBuilder);
}

そして、私はこのエラーが発生しています:

タイプ 'System.Collections.Generic.List' を 'System.Collections.Generic.ICollection' に暗黙的に変換することはできません。明示的な変換が存在します (キャストがありませんか?)

インターフェイスを削除しようとしましたが、すべて問題ありません..

何か役に立ちますか?

ありがとう

4

1 に答える 1

3

エンティティ フレームワークは、ナビゲーション プロパティのインターフェイスを処理できません。それらを具体化する方法を知りません。したがって、タイプ(class Word : IWordなど)のインターフェースを保持できますVocabulary.Wordsが、ICollection<Word>.

于 2013-01-22T20:06:56.357 に答える