【发布时间】:2012-11-22 03:05:27
【问题描述】:
我在两个表之间创建了多对多关系
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>();
}
TABLE 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);
【问题讨论】:
-
如果您尝试在“OnModelCreating”中手动映射它,就像您对实体“电影”所做的那样,它会给您带来任何错误吗?
-
我不明白你的问题...
标签: c# asp.net-mvc entity-framework ef-code-first