我在两个表之间创建了多对多关系
表MoviesHashTags由 DbContext 自动创建。
我希望能够使用 Linq 向 MoviesHashTags 表发送查询
问题是我没有它的任何模型,并且 DbContext 没有给我任何使用它的选项。例如类似的东西:
_db.MoviesHashTags.Select(i =>i.Id).Where(i => i.HashTagId==3)
有没有办法做到这一点_db.Database.ExecuteSqlCommand("QUERY")
例子:
我想获取所有具有 HashTagId=3 的 ID
表电影HashTags:
-------------------------------------------------------------------------
表电影:
[DataContract]
public class Movie
{
[DataMember]
public long Id { get; set; }
*
*
*
[DataMember]
public ICollection<HashTag> HashTagsCollection { get; set; }
public Movie()
{
HashTagsCollection = new HashSet<HashTag>();
}
表标签:
[DataContract]
public class HashTag
{
[DataMember]
public long HashTagId { get; set; }
*
*
*
[DataMember]
public ICollection<Movie> MoviesCollection { get; set; }
public HashTag()
{
MoviesCollection = new HashSet<Movie>();
}
数据库上下文:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Movie>().
HasMany(c => c.HashTagsCollection).
WithMany(p => p.MoviesCollection).
Map(
m =>
{
m.MapLeftKey("Id");
m.MapRightKey("HashTagId");
m.ToTable("MoviesHashTags");
});
}
答案:感谢@DigitalD
db.Movies.Where(m => m.HashTagsCollection.Any(h => h.HashTagId == hashTag.HashTagId)).Select(m => m.Id);