2011-07-10 107 views
1

模型如下:什麼是正確的方式來查詢與EF 4.1的「多 - 許多」關係?

public class User 
{ 
    public int Id 
    public virtual ICollection<Tag> FollowingTags {get;set;} 
} 

public class Tag 
{ 
    public int Id 
    public virtual ICollection<User> Followers {get;set;} 
    public virtual ICollection<Post> Posts {get;set;} 
} 

public class Post { 
    public int Id 
    public virtual ICollection<Tag> Tags {get;set;} 
} 

這意味着有兩個多到不少來自用戶發佈,或許它可以被稱爲A M:M:M關係。

現在,如果我想查找所有標籤後跟特定用戶的帖子。我想知道EF 4.1的最佳做法是什麼?

如果使用ADO.NET,我認爲加入兩個聯合表是有效的方法,但聯合表隱藏在EF中,那麼該怎麼做呢?我知道一些解決方案,但性能不好,因爲生成的SQL不夠好。所以我想要一個好的查詢來獲得良好的性能。

謝謝!

回答

0
(from p in db.Posts 
from t in p.Tags 
from f in t.Followers 
where f.Id == id 
select p).Distinct() 
0

嘗試使用您的查詢,如「包含」修改器:

方面CTX =新的上下文()//上下文是在這種情況下

VAR查詢實體上下文=從ctx.posts p .INCLUDE( 「tags.users」) 其中p.tags.Followers.ID = TargetUserID

這應包括它

+0

「p.tags」 是一個集合,即不能 「.Followers」,和等等。 – Chance

相關問題