Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 来自MVC的Mongodb配置_C#_Asp.net Mvc_Mongodb - Fatal编程技术网

C# 来自MVC的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的新手,现在正在学习一个教程,但我担心该教程有点旧,我遇到了以下错误:
无法将类型“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不久前已经更改。所以你需要自己发出这个命令。我已经用一个获取数据库统计数据的方法更新了答案。