0

RavenDb を使用してイベント マネージャーを開発しています。ログインしたユーザーは、次の場所に投稿を書き、ユーザー ウォール (ホームページ) ですべての投稿を見ることができます。すべての投稿に「いいね」や「お気に入り」を付けることができます。ツイッターやフェイスブックのような小さな構造。

フォローしている場所ごとに投稿を取得する最良の方法はどれですか? いいねとお気に入りの数を取得する必要があり、viewmodel の投稿を既にマークしてビューに送信し、リストを表示する必要があります。私はこのようにしようとしていますが、最大リクエスト例外をスローします。

            var myPlaces = this.SessionDb.Query<EventFollow>()
                .Where(ls => ls.UserId == User.Identity.Name)
                .Select(l => l.PlaceId);

            var listPosts = this.SessionDb
                .Advanced.LuceneQuery<Post>().WhereIn("PlaceId", myPlaces)
                .Skip(skip)
                .Take(20)
                .ToList();


            List<PostViewModel> posts = new List<SpottedViewModel>();

            foreach (var p in listPosts)

            {
                PostViewModel vm = new PostViewModel();

                vm.Creator = p.UserCreatorId == User.Identity.Name;

                vm.Like =  this.SessionDb.Query<Lol>().Where(lol => lol.SpottedId == p.Id).Count();

                vm.Favourites = this.SessionDb.Query<Favourite>().Where(fa => fa.SpottedId == p.Id).Count();

                vm.Post= s;

                vm.IsLike = this.SessionDb.Query<Like>().FirstOrDefault(l => l.PostId == p.Id) != null;

                vm.IsFavourite = this.SessionDb.Query<Favourite>().FirstOrDefault(f => f.SpottedId == s.Id) != null;


                posts.Add(vm);
            }

私はこれらのモデルを持っています:

public class Post
{
    public string Id { get; set; }
    public string UtenteCreatorId { get; set; }
    public string PlaceId { get; set; }
    public string Body{ get; set; }
}

public class Lol
{
    public string Id { get; set; }

    public string PostId { get; set; }

    public string UserId { get; set; }
}

public class Place
{
    public string Id { get; set; }

    public string UserCreatorId { get; set; }

    public string Name{ get; set; }
}

public class Favourite
{
    public string Id { get; set; }

    public string PostId { get; set; }

    public string UserId { get; set; }
}

public class EventFollow
{
    public string Id { get; set; }

    public string PlaceId { get; set; }

    public string UserId { get; set; }
}

ありがとう、そして私の英語でごめんなさい!;D

4

1 に答える 1