Entity framework 使用EF 4.1查询“多”关系的正确方法是什么?
模型如下所示:Entity framework 使用EF 4.1查询“多”关系的正确方法是什么?,entity-framework,entity-framework-4.1,Entity Framework,Entity Framework 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<
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;}
}
这意味着从用户到帖子有两个多对多关系,也许可以称之为M:M:M关系
现在,如果我想找到所有带有某个用户跟随的标签的帖子。我想知道EF4.1的最佳实践是什么
如果使用ADO.NET,我认为连接两个关节表是有效的方法,但关节表隐藏在EF中,那么如何做呢?我知道一些解决方案,但是性能不好,因为生成的SQL不够好。所以我要求一个好的查询来获得好的性能
谢谢大家! 尝试在查询中使用include修饰符,如: context ctx=new context//context是本例中的实体上下文 var query=来自ctx.posts.includetags.users中的p 其中p.tags.Followers.ID=TargetUserID
这应该包括它p标签是一个集合,不能包含.Followers等等。
(from p in db.Posts
from t in p.Tags
from f in t.Followers
where f.Id == id
select p).Distinct()