2つのテーブル間に多対多の関係を作成しました
テーブルMoviesHashTagsは、DbContextによって自動作成されました。
Linqを使用してMoviesHashTagsテーブルにクエリを送信できるようにしたい
問題は、私にはそのモデルがなく、DbContextがそれを使用するためのオプションを与えていないことです。たとえば、そのようなもの:
_db.MoviesHashTags.Select(i =>i.Id).Where(i => i.HashTagId==3)
せずにこれを行う方法はありますか_db.Database.ExecuteSqlCommand("QUERY")
例:
HashTagId=3のすべてのIDを取得したい
TABLE MoviesHashTags:
-------------------------------------------------------------------------
テーブル映画:
[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>();
}
DbContext:
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);