运行时编译代码中找不到ToList,FirstOrDefault,AsQueryable - MongoDb驱动程序

时间:2016-03-19 19:48:47

标签: vb.net mongodb

MongoDB遗产驱动程序(最新版本)
VB.Net

我正在使用CodeDom编译在运行时编译和运行脚本。该脚本将访问MongoDB。我已经取得了一切成功,直到我在Mongodb Cursor上使用ToList,FirstOrDefault,AsQueryable方法。

当我将以下代码添加到主机程序集时,该过程功能完美无缺。

Function process_item(ByVal msg As queue_message, _
                                ByVal job As queue_job, _
                                ByVal invMongoDatabaseSec As MongoDatabase) As object

    Dim sColl = invMongoDatabaseSec.GetCollection(Of people)("people")
    Dim s = sColl.Find(Query.EQ("_id", "Some_Id_Here")).FirstOrDefault
    return s

End Function

我还测试过,确保编译器通过下面的略微修改正确地与MongoDB通信,并且成功。

Function process_item(ByVal msg As queue_message, _
                                ByVal job As queue_job, _
                                ByVal invMongoDatabaseSec As MongoDatabase) As object

    Dim sColl = invMongoDatabaseSec.GetCollection(Of people)("people")
    Dim s as people = sColl.FindOne(Query.EQ("_id", "Some_Id_Here"))
    return s

End Function

但是,当我在运行时编译器中放入完全相同的代码时,.FirstOrDefault会抛出一个错误:调用的目标抛出了异常。 ---> System.MissingMemberException:公共成员' ToList'关于类型' MongoCursor(人物)'找不到。

我知道已编译的代码在另一个AppDomain中运行,并且我已经考虑了已加载到主机中的所有组件。

For Each a In Assembly.GetExecutingAssembly.GetReferencedAssemblies()
    vbParams.ReferencedAssemblies.Add(Assembly.Load(a).Location)
Next

我有完全相同的"进口"在两个地方引用。特别注意MongoDB和System.Collections.Generic(我知道ToList等派生自)。

我很确定我在某个地方错过了一个引用,但对于我的生活,我无法弄清楚它是什么。是否有参考,或我缺少的导入?任何见解将不胜感激。

Imports System
Imports MongoDB
Imports MongoDB.Driver
Imports MongoDB.Driver.Linq
Imports MongoDB.Bson
Imports MongoDB.Driver.Builders
Imports mongodb.driver.legacy
Imports System.Web
Imports System.Web.Caching
Imports Microsoft.VisualBasic 
Imports System.Collections
Imports System.Collections.Generic
Imports System.Linq
Imports system.data

0 个答案:

没有答案