![](/img/trans.png)
[英]Entity Created OnModelCreating is not accessible in DbContext
[英]How to use the auto created table by the DbContext (OnModelCreating(DbModelBuilder))
我在兩個表之間創建了多對多關系
表MoviesHashTags由DbContext自動創建。
我希望能夠使用Linq向MoviesHashTags表發送查詢
問題是我沒有任何模型,DbContext沒有提供使用它的任何選擇。 例如這樣的事情:
_db.MoviesHashTags.Select(i =>i.Id).Where(i => i.HashTagId==3)
沒有_db.Database.ExecuteSqlCommand("QUERY")
有沒有辦法做到這一點
例:
我想取所有具有HashTagId = 3的ID
表格MoviesHashTags:
-------------------------------------------------------------------------
表電影:
[DataContract]
public class Movie
{
[DataMember]
public long Id { get; set; }
*
*
*
[DataMember]
public ICollection<HashTag> HashTagsCollection { get; set; }
public Movie()
{
HashTagsCollection = new HashSet<HashTag>();
}
表格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);
Linq應該能夠處理以下內容:
var HashTag = _db.HashTags.Find(3); //or whatever method you need to get a single hashtag
var Movies = _db.Movies.Where(m => m.HashTagsCollection.Contains(HashTag))
.Select(m => m.Id);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.