我正在使用 C# 创建 SQL CLR 过程来在 MongoDB 上执行一些基本操作,例如获取集合的内容、插入文档等。 但我得到“MongoDB.Bson.Serialization.BsonSerializer”的类型初始值设定项抛出异常。
有什么想法吗?
与 C# 完全相同的代码直接可以正常工作。
我正在使用适用于 Mongo 版本 1.10、.NET Framework 3.5、Microsoft SQL Server 2008 (RTM) 的 C# 驱动程序。
您可以在下面找到堆栈跟踪的示例:
无法从数据库中删除集合 错误:“MongoDB.Bson.Serialization.BsonSerializer”的类型初始值设定项引发异常。在 MongoDB.Bson.Serialization.BsonSerializer.LookupSerializer(类型类型) 在 MongoDB.Driver.MongoDatabase.RunCommandAs[TCommandResult](IMongoCommand 命令) 在 MongoDB.Driver.MongoDatabase.DropCollection(字符串集合名称) 在 Mongo.Test()
从数据库获取集合 无法从数据库获取集合 错误:“MongoDB.Bson.Serialization.BsonSerializer”的类型初始值设定项引发异常。在 MongoDB.Bson.Serialization.BsonSerializer.LookupSerializer(类型类型) 在 MongoDB.Driver.MongoCollection.RunCommandAs[TCommandResult](IMongoCommand 命令,ReadPreference readPreference) 在 MongoDB.Driver.MongoCollection.Count(CountArgs args) 在 Mongo.Test()
正在将文档插入集合... 无法插入数据库 test_blobs 集合 错误:无法连接到服务器 xx.local:27017:“MongoDB.Bson.Serialization.BsonSerializer”的类型初始值设定项在 MongoDB.Driver.Internal.DirectMongoServerProxy.Connect(TimeSpan 超时,ReadPreference readPreference)处引发异常。 在 MongoDB.Driver.Internal.DirectMongoServerProxy.ChooseServerInstance(ReadPreference readPreference) 在 MongoDB.Driver.MongoServer.AcquireConnection(ReadPreference readPreference) 在 MongoDB.Driver.MongoCollection.InsertBatch(类型nominalType、IEnumerable 文档、MongoInsertOptions 选项) 在 MongoDB.Driver.MongoCollection.Insert(类型nominalType、对象文档、MongoInsertOptions 选项) 在 MongoDB.Driver.MongoCollection.Insert[TNominalType](TNominalType 文档) 在 Mongo.Test()
最佳答案
问题(或者至少部分问题)似乎是从 .NET Driver for MongoDB 2.x 系列开始,目标框架版本更改为 4.5。
所以有两种可能性:
如果您确实需要在 SQL Server 2008 或 2008 R2 中实现此功能,那么您可以获取 1.10 版 .NET Driver for MongoDB 的源代码,网址为:
https://github.com/mongodb/mongo-csharp-driver/tree/v1.10.0
这是使用 .NET Framework 3.5 版的最后一个版本。由于 .NET Driver for MongoDB 的 2.x 系列似乎可以在较新版本的 SQL Server(我认为是 2012 及更高版本)中运行,因此您确实有选项:
- 安装 SQL Server 2014(或即将推出的 2016 年)Express Edition(免费版本)
- 将 2.x 版本的 .NET Driver for MongoDB 加载到 Express Edition 实例上
- 然后设置从 SQL Server 2008 实例到 SQL Server 201[2,4,6] Express Edition 的链接服务器,并因此使用 Express Edition 作为代理
关于c# - mongodb 的 SQL CLR 抛出 'MongoDB.Bson.Serialization.BsonSerializer' 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31476180/