我正在用 RavenDb 开发一个事件管理器。登录的用户可以在后面的地方写一个帖子,然后在用户墙(主页)中查看所有帖子。每个帖子都可以标记为“喜欢”和“收藏”。像 twitter 或 facebook 这样的小结构。
通过我关注的地方获取帖子的最佳方式是什么?我需要获取喜欢和收藏的数量,如果我已经在 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