Как правильно связать отношения «многие-многие-многие» с EF 4.1? - PullRequest
1 голос
/ 10 июля 2011

Модель, как показано ниже:

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.

Теперь, если я хочу найти все сообщения с тегами, за которыми следует определенный пользователь. Интересно, что является лучшей практикой с EF 4.1?

Если вы используете ADO.NET, я считаю, что объединение двух объединенных таблиц является эффективным способом, но объединенные таблицы скрыты в EF, тогда как это сделать? Я знаю некоторые решения, но производительность не очень хорошая, потому что сгенерированный SQL недостаточно хорош. поэтому я прошу хороший запрос, чтобы получить хорошую производительность.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 18 июля 2011
(from p in db.Posts
from t in p.Tags
from f in t.Followers
where f.Id == id
select p).Distinct()
0 голосов
/ 10 июля 2011

Попробуйте использовать модификатор «include» в своем запросе, например:

context ctx = new context () // контекст в данном случае является контекстом сущности

var query = из p в ctx.posts.include ("tags.users") где p.tags.Followers.ID = TargetUserID

Это должно покрыть это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...