C# MongoDB MongoClient.GetServer()已被弃用。什么是新的API?
这是我与数据库的连接字符串:C# MongoDB MongoClient.GetServer()已被弃用。什么是新的API?,c#,mongodb,C#,Mongodb,这是我与数据库的连接字符串: private static string ConnectionString = "mongodb://user:password@server:port/"; private static string AuthSource = "?authSource=location"; public static MongoCollection<ItemEntity> GetMyItemCollectionDB = new MongoClient(Connec
private static string ConnectionString = "mongodb://user:password@server:port/";
private static string AuthSource = "?authSource=location";
public static MongoCollection<ItemEntity> GetMyItemCollectionDB = new MongoClient(ConnectionString + DBName + AuthSource)
.GetServer().GetDatabase(DBName).GetCollection<ItemEntity>(CollectionName);
但是,我得到了一个“空对象”错误。有什么问题吗
编辑:如果使用新API不是很重要,那么告诉我。要获得MongoServer实例,我反编译程序集MongoDB.Driver.dll, 函数GetServer是
[Obsolete("Use the new API instead.")]
public static MongoServer GetServer(this MongoClient client)
{
return
MongoServer.Create(MongoServerSettings.FromClientSettings(client.Settings));
}
所以您可以尝试以下代码
MongoClient client = new MongoClient(ConnectionString + DBName + AuthSource);
MongoServer server = new MongoServer(MongoServerSettings.FromClientSettings(client.Settings));
var yourCollection = server.GetDatabase(DBName).GetCollection<ItemEntity>(CollectionName);
我相信您知道您的第二个代码最终返回了一个
IMongoCollection
但是,
MongoCollection
并不是从IMongoCollection
继承的,这就是为什么最后会得到一个NULL
值。你的GetMyItemCollectionDB方法做了很多。。。。哪一位返回空值?好的,第一位有效。。我不明白为什么第二个不起作用。你能解释一下原因吗?以及可能的解决方案如果你能详细说明,你的答案会更有用。
MongoClient client = new MongoClient(ConnectionString + DBName + AuthSource);
MongoServer server = new MongoServer(MongoServerSettings.FromClientSettings(client.Settings));
var yourCollection = server.GetDatabase(DBName).GetCollection<ItemEntity>(CollectionName);
MongoDB.Driver.MongoServer.Create(MongoServerSettings)
MongoDB.Driver.MongoServer.WithReadConcern(ReadConcern)
MongoDB.Driver.MongoServer.WithReadPreference(ReadPreference)
MongoDB.Driver.MongoServer.WithWriteConcern(WriteConcern)