我正在使用RavenDb開發事件管理器。登錄的用戶可以在後面的地方寫一篇文章,然後查看用戶牆(主頁)中的所有文章。每篇文章都可以標記爲「喜歡」和「收藏」。像Twitter或Facebook這樣的小型結構。RavenDb - 從ID列表中獲取列表
這是最好的方式來獲得我所關注的地方的帖子?我需要獲得喜歡和收藏夾的數量,如果我已經在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
是的,但是在RavenDb Group(Google),一位專家對我說,這個數據模型比先前(比如你的)要好很多,喜歡或者喜歡 – Stefano 2013-04-10 15:25:46
這對我來說是令人驚訝的。你有鏈接到這個討論? – 2013-04-11 07:03:52
https://groups.google.com/forum/#!topic/ravendb/vclQkOKBjJU – Stefano 2013-04-14 11:03:07