C# 来自MVC的Mongodb配置
我是Mongodb的新手,现在正在学习一个教程,但我担心该教程有点旧,我遇到了以下错误:C# 来自MVC的Mongodb配置,c#,asp.net-mvc,mongodb,C#,Asp.net Mvc,Mongodb,我是Mongodb的新手,现在正在学习一个教程,但我担心该教程有点旧,我遇到了以下错误: 无法将类型“MongoDB.Driver.IMongoDatabase”隐式转换为“MongoDB.Driver.MongoDatabase”。存在显式转换(是否缺少转换? 这是我的控制器类中的代码: public class HomeController : Controller { public MongoDatabase Database; public Ho
无法将类型“MongoDB.Driver.IMongoDatabase”隐式转换为“MongoDB.Driver.MongoDatabase”。存在显式转换(是否缺少转换?
这是我的控制器类中的代码:
public class HomeController : Controller
{
public MongoDatabase Database;
public HomeController()
{
var client = new MongoClient(Settings.Default.RealEstateConnectionString);
Database = client.GetDatabase(Settings.Default.RealEstateDatabaseName); //This is the line with the error...
}
public ActionResult Index()
{
Database.GetStats();
return Json(Database.Server.BuildInfo, JsonRequestBehavior.AllowGet);
}
}
在本教程中,他们将使用以下内容:
var server = client.GetServer();//Shows a warning: MongoClientExtensions.GetServer(MongoClient) is obsolete: Use the new API instead
然后:
Database = server.GetDatabase(Settings.Default.RealEstateDatabaseName);
但根据警告,使用
var server = client.GetServer();
是过时的,所以我需要以另一种方式进行转换,就像我首先展示的那样,我尝试转换到
MongoDatabase
,但它不起作用…您必须将数据库声明为接口
public MongoDatabase Database;
到
var server=client.GetServer
已过时,因为在您使用新驱动程序时,它与传统驱动程序一起使用
试试这个
var res =MongoDatabase.RunCommand<BsonDocument>(BsonDocument.Parse("{ dbStats: 1, scale: 1024 }"));
您必须将数据库声明为接口
public MongoDatabase Database;
到
var server=client.GetServer
已过时,因为在您使用新驱动程序时,它与传统驱动程序一起使用
试试这个
var res =MongoDatabase.RunCommand<BsonDocument>(BsonDocument.Parse("{ dbStats: 1, scale: 1024 }"));
请尝试以下操作:
public class HomeController
{
public IMongoDatabase Database;
public HomeController()
{
var client = new MongoClient(Settings.Default.RealEstateConnectionString);
Database = client.GetDatabase(Settings.Default.RealEstateDatabaseName); //This is the line with the error...
}
public ActionResult Index()
{
Database.GetStats();
return Json(Database.Server.BuildInfo, JsonRequestBehavior.AllowGet);
}
}
另外,在IMongoDatabase
上没有Database.GetStats()
,但是您可以创建自己的扩展方法来封装它:-
public static class MongoDatabaseExtentions
{
public static async Task<BsonDocument> GetStatsAsync(this IMongoDatabase database)
{
return await database.RunCommandAsync<BsonDocument>("{ dbstats: 1 }")
.ConfigureAwait(false);
}
}
公共静态类MongoDatabaseExtensions
{
公共静态异步任务GetStatsAsync(此IMongoDatabase数据库)
{
返回wait database.RunCommandAsync(“{dbstats:1}”)
.配置等待(错误);
}
}
尝试以下操作:
public class HomeController
{
public IMongoDatabase Database;
public HomeController()
{
var client = new MongoClient(Settings.Default.RealEstateConnectionString);
Database = client.GetDatabase(Settings.Default.RealEstateDatabaseName); //This is the line with the error...
}
public ActionResult Index()
{
Database.GetStats();
return Json(Database.Server.BuildInfo, JsonRequestBehavior.AllowGet);
}
}
另外,在IMongoDatabase
上没有Database.GetStats()
,但是您可以创建自己的扩展方法来封装它:-
public static class MongoDatabaseExtentions
{
public static async Task<BsonDocument> GetStatsAsync(this IMongoDatabase database)
{
return await database.RunCommandAsync<BsonDocument>("{ dbstats: 1 }")
.ConfigureAwait(false);
}
}
公共静态类MongoDatabaseExtensions
{
公共静态异步任务GetStatsAsync(此IMongoDatabase数据库)
{
返回wait database.RunCommandAsync(“{dbstats:1}”)
.配置等待(错误);
}
}
您试图从客户端而不是服务器获取数据库
Database = client.GetServer().GetDatabase(Settings.Default.RealEstateDataBaseName);
这是可行的,但即使
GetServer()
已过时,它仍会运行。您试图从客户端而不是服务器获取数据库
Database = client.GetServer().GetDatabase(Settings.Default.RealEstateDataBaseName);
这是可行的,但即使
GetServer()
已过时,它仍会运行。我的朋友已经尝试过了,但是Database.GetStats()方法在Index()操作中不起作用<代码>'IMongoDatabase'不包含'GetStats'的定义,并且找不到接受'IMongoDatabase'类型的第一个参数的扩展方法'GetStats'(是否缺少using指令或程序集引用?我认为为了让GetStats()方法工作,它应该是MongoDatabase
类型,有什么建议吗?没有,即使您使用MongoDatabase,也没有更多的Getstats(),那么我如何才能做到这一点?当我使用MongoDatabase时,它不会显示Getstats()的错误,我的朋友已经尝试过了,但是Database.Getstats()方法在Index()操作中不起作用<代码>'IMongoDatabase'不包含'GetStats'的定义,并且找不到接受'IMongoDatabase'类型的第一个参数的扩展方法'GetStats'(是否缺少using指令或程序集引用?我认为为了让GetStats()方法工作,它应该是MongoDatabase
类型,有什么建议吗?没有,即使您使用MongoDatabase,也没有更多的Getstats(),那么我如何才能做到这一点?当我使用MongoDatabase时,它不会显示Getstats()的错误,正如您提到的数据库。Getstats()
在IMongoDatabase上不可用…请阅读以下内容,不久前驱动程序的api发生了更改。所以你需要自己发出这个命令。我已经用一个获取数据库统计信息的方法更新了答案。它不起作用,正如你提到的database。GetStats()
在IMongoDatabase上不可用…阅读下面的内容,驱动程序的api不久前已经更改。所以你需要自己发出这个命令。我已经用一个获取数据库统计数据的方法更新了答案。