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