これはおそらく単純な初心者の間違いですが、私はそれを理解できないようです.
私はエンティティ フレームワーク (ef 5.0、.net 4.5) を使い始めようとしています。最初に既存のデータベースと EF コードを操作しようとしています。1 対多の関係を持つ 2 つの単純なクラス: clips と clip_ratings (各クリップにゼロまたは多数の評価が存在する可能性があります)。クラスの関連部分は次のとおりです。
public class clip
{
public clip()
{
this.Ratings = new List<clip_ratings>();
}
public virtual ICollection<clip_ratings> Ratings { get; set; }
public int clip_id { get; set; }
public Nullable<int> clip_type { get; set; }
// ...
}
public class clip_ratings
{
public int cr_id { get; set; }
public int cr_clip_id { get; set; }
// ...
[ForeignKey("cr_clip_id")]
public clip Clip { get; set; }
}
今、DBからいくつかのデータを読み取ろうとしています:
var query = from b in db.clips
orderby b.clip_id where b.Ratings.Count > 1
select b;
foreach (var item in query)
{
Console.WriteLine(item.Ratings.Count +" | "+item.clip_linktext);
}
クエリは DB から正しい結果セットを返しますが、item.Ratings.Count でエラーが発生します。item.clip_linktext を出力しただけでは問題ありませんが、item.Ratings.Count では次のエラーが発生します。
メタデータ コレクション内の複数のアイテムが ID 'clip_ratings' と一致します。
私はすべての MS EF チュートリアルに従い、さらにいくつかの投稿を読んでみましたが、理解できないようです。ここの誰かがこれについて私を助けてくれることを願っています(そして、それは簡単に修正できます;))
更新: classMap.cs ソースの追加:
public class clipMap : EntityTypeConfiguration<clip>
{
public clipMap()
{
// Primary Key
this.HasKey(t => t.clip_id);
// ...
// Table & Column Mappings
this.ToTable("clips");
this.Property(t => t.clip_id).HasColumnName("clip_id");
this.Property(t => t.clip_type).HasColumnName("clip_type");
...
}
}
public class clip_ratingsMap : EntityTypeConfiguration<clip_ratings>
{
public clip_ratingsMap()
{
// Primary Key
this.HasKey(t => t.cr_id);
// Table & Column Mappings
this.ToTable("clip_ratings");
this.Property(t => t.cr_id).HasColumnName("cr_id");
this.Property(t => t.cr_clip_id).HasColumnName("cr_clip_id");
// ...
}
}