我是RavenDb的新手,我遇到了以下問題,在SQL數據庫中很容易解決,但在RavenDb中看起來並不那麼容易。RavenDb:找到演員X不是代理的電影
由於我的課:
//document collection
public class Movie
{
public string Id { get; set; }
public string Title { get; set; }
public List<MovieActor> Actors { get; set; }
}
public class MovieActor
{
public string ActorId { get; set; }
public string CharacterName { get; set; }
public DateTime FirstAppearance { get; set; }
}
//document collection
public class Actor
{
public string Id { get; set; }
public string Name { get; set; }
}
發現每部電影萊昂納多迪卡普里奧行事是非常容易和高效使用下列地圖索引:
public class Movies_ByActor : AbstractIndexCreationTask<Movie>
{
public Movies_ByActor()
{
Map = movies => from movie in movies
from actor in movie.Actors
select new
{
MovieId = movie.Id,
ActorId = actor.ActorId
};
}
}
但這不是我想要的實現,我想相反...找到萊昂納多迪卡普里奧沒有采取行動的所有電影。
我也曾嘗試以下查詢:
var leonardoActorId = "actor/1";
var movies = from movie in RavenSession.Query<Movie>()
where !movie.Actors.Any(a => a.ActorId.Equals(leonardoActorId))
select movie;
但這隻會給我一個例外:
System.InvalidOperationException: Cannot process negated Any(), see RavenDB-732 http://issues.hibernatingrhinos.com/issue/RavenDB-732
任何人都知道如何做到這一點的RavenDb的正確方法?
這並不是說我對Lenoardo迪卡普里奧任何=) – 2013-03-23 17:11:13