这可能只是一些简单的初学者错误,但我似乎无法弄清楚。
我只是想开始使用实体框架(ef 5.0、.net 4.5),直到现在一直在滚动我自己的所有 sql 语句。我首先尝试使用现有的数据库和 EF 代码,使用两个具有一对多关系的简单类: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; }
}
现在我正在尝试从数据库中读取一些数据:
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);
}
该查询从数据库返回正确的结果集,但它在 item.Ratings.Count 上出错。当我只输出 item.clip_linktext 一切都很好,但是使用 item.Ratings.Count 我得到以下错误:
元数据集合中的多个项目与身份“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");
// ...
}
}