查询上的RavenDB异常 - 未找到方法:'Void Raven.Abstractions.Data.IndexQuery.set_DefaultField(System.String)'

时间:2012-07-01 03:20:46

标签: c# ravendb

我在刷新模型的foreach循环期间遇到以下异常,因为它试图枚举查询返回的结果。我无法在互联网上的任何其他地方找到与此错误有关的任何内容。有人可以指出我做错了吗?

  

System.MissingMethodException未处理

     
    

Message =找不到方法:'Void Raven.Abstractions.Data.IndexQuery.set_DefaultField(System.String)'。     源= Raven.Client.Lightweight

         

堆栈跟踪:

         
      

at Raven.Client.Document.AbstractDocumentQuery`2.GenerateIndexQuery(String query)

             

at Raven.Client.Document.AbstractDocumentQuery 2.InitializeQueryOperation(Action 2 setOperationHeaders)in c:\ Builds \ RavenDB-Stable \ Raven.Client.Lightweight \ Document \ AbstractDocumentQuery.cs:line 399

             

在c:\ Builds \ RavenDB-Stable \ Raven.Client.Lightweight \ Document \ AbstractDocumentQuery.cs中的Raven.Client.Document.AbstractDocumentQuery`2.InitSync()中:第434行

             

位于c:\ Builds \ RavenDB-Stable \ Raven.Client.Lightweight \ Document \ AbstractDocumentQuery.cs中的Raven.Client.Document.AbstractDocumentQuery`2.get_QueryResult():第421行

             

在Raven.Client.Linq.RavenQueryProviderProcessor`1.ExecuteQueryTProjection c:\ Builds \ RavenDB-Stable \ Raven.Client.Lightweight \ Linq \ RavenQueryProviderProcessor.cs:line 1263

             

at Raven.Client.Linq.RavenQueryProviderProcessor`1.Execute(Expression expression)in c:\ Builds \ RavenDB-Stable \ Raven.Client.Lightweight \ Linq \ RavenQueryProviderProcessor.cs:line 1244

             

在Raven.Client.Linq.RavenQueryProvider`1.Execute(表达式表达式)中的c:\ Builds \ RavenDB-Stable \ Raven.Client.Lightweight \ Linq \ RavenQueryProvider.cs:第138行

             

在Raven.Client.Linq.RavenQueryProvider`1.System.Linq.IQueryProvider.Execute(表达式表达式)中的c:\ Builds \ RavenDB-Stable \ Raven.Client.Lightweight \ Linq \ RavenQueryProvider.cs:第195行< / p>              

位于c:\ Builds \ RavenDB-Stable \ Raven.Client.Lightweight \ Linq \ RavenQueryInspector.cs中的Raven.Client.Linq.RavenQueryInspector`1.GetEnumerator():第97行

             

在C:\ AdminPanel \ AdminPanel.xaml.cs中的AdminPanel.RefreshModel():第111行

    
  
private void RefreshModel()
{
    MainModel.Movies.Clear();
    foreach (FriendlyName movie in App.Database.QueryAllMovies())
    {
        MainModel.Movies.Add(movie);
    }
}

public IEnumerable<FriendlyName> QueryAllMovies()
{
    using (var session = DocumentStore.OpenSession())
    {
        return session.Query<Movie, Movies_AsFriendlyName>().As<FriendlyName>();
    }
}

class Movies_AsFriendlyName : AbstractIndexCreationTask<Movie>
{
    public Movies_AsFriendlyName()
    {
        Map = movies => movies.Select(movie => new { Id = movie.Id, Name = movie.FileName });

        TransformResults = (database, movies) => movies.Select(movie => new { Id = movie.Id, Name = movie.FileName });
    }
}

public class FriendlyName
{
    public string Name { get; set; }
    public string Id { get; set; }

    public FriendlyName(string id, string name)
    {
        Id = id;
        Name = name;
    }

    public override string ToString()
    {
        return Name;
    }
}

1 个答案:

答案 0 :(得分:3)

通常当你有这样的东西时,你会针对一个版本编译,但是它试图使用的dll是另一个版本。

我敢打赌,如果你看看程序运行的位置和编译位置之间的版本,它们是不同的。