c# - mongodb 的 SQL CLR 抛出 'MongoDB.Bson.Serialization.BsonSerializer' 异常

标签 c# sql-server mongodb sqlclr

我正在使用 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。

所以有两种可能性:

  1. 如果您确实需要在 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 版的最后一个版本。

  2. 由于 .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/

相关文章:

c# - 属性路由返回404

javascript - meteor :仅当值存在时才将字段插入 MongoDB

c# - 动态的 Mongodb 集合

c# - lambda 表达式 C#

c# - ReferenceEquals - true 和 Equals - false 预期行为吗?

c# - 可以结合 C#.net、VB.net 和 ASP.net 吗?

sql-server - UNION 与 SELECT DISTINCT 和 UNION ALL 性能对比

mysql - 混合变量赋值和数据检索——MySQL 与 MS SQL Server

c++ - SQL Server - 未找到数据源名称且未指定默认驱动程序

python - Pymongo 匹配和排序