C#MongoDB驱动程序2.2异步方法

C#MongoDB驱动程序2.2异步方法,c#,asp.net,asp.net-mvc,mongodb,C#,Asp.net,Asp.net Mvc,Mongodb,我对MongoDB CSharp驱动程序比较陌生。我以前没有使用过异步方法。我已经创建了一个ASP.NETMVC项目,我正在使用MongoDB来存储数据。我的数据存储库位于一个完全独立的项目中。我得到的记录如下: namespace PostBoard.Data { public class PostDataRepository { private IMongoDatabase db = null; public PostDataRepository()

我对MongoDB CSharp驱动程序比较陌生。我以前没有使用过异步方法。我已经创建了一个ASP.NETMVC项目,我正在使用MongoDB来存储数据。我的数据存储库位于一个完全独立的项目中。我得到的记录如下:

namespace PostBoard.Data 
{
  public class PostDataRepository 
  {

    private IMongoDatabase db = null;

    public PostDataRepository() 
    {

    }
    public PostDataRepository(IMongoDatabase mongoDb) 
    {
      db = mongoDb;

    }



    public IList<Post> GetAllPosts() 
    {
      List<Post> _postQueryable = GetAllPostsFromDb().Result;
      return _postQueryable;
    }

    public async Task<List<Post>> GetAllPostsFromDb() 
    {
      IMongoCollection<Post> _postCollection = db.GetCollection<Post> ("userpost");


      SortDefinitionBuilder<Post> sortBy = Builders<Post>.Sort;
      SortDefinition <Post> sort = sortBy.Descending(x => x.PostDate);
      Task <List<Post>> _postTask = await Task.FromResult<Task<List< Post>>> (_postCollection.Find <Post> (_ => true).Sort(sort).ToListAsync());

      return _postTask.Result;
    }
  }
}
namespace PostBoard.Data
{
公共类PostDataRepository
{
私有数据库db=null;
公共PostDataRepository()
{
}
公共PostDataRepository(IMongoDatabase mongoDb)
{
db=mongoDb;
}
公共IList GetAllPosts()
{
List _postQueryable=GetAllPostsFromDb().Result;
返回_postQueryable;
}
公共异步任务GetAllPostsFromDb()
{
IMongoCollection_postCollection=db.GetCollection(“userpost”);
SortDefinitionBuilder sortBy=Builders.Sort;
SortDefinition sort=sortBy.Descending(x=>x.PostDate);
Task postTask=等待Task.FromResult>(postCollection.Find(=>true).Sort(Sort.ToListSync());
返回_postTask.Result;
}
}
}
我在MVC控制器中调用GetAllPosts函数,它运行良好。但是,如果我将GetallPostsFromDb()更改为以下内容,它将无法工作

public async Task <List<Post>> GetAllPostsFromDb() 
{
  IMongoCollection <Post> _postCollection = db.GetCollection <Post> ("userpost");


  SortDefinitionBuilder <Post> sortBy = Builders<Post>.Sort;
  SortDefinition<Post> sort = sortBy.Descending(x => x.PostDate);
  List <Post> _postTask = await _postCollection.Find <Post> (_ => true).Sort(sort).ToListAsync();

  return _postTask;
}
public异步任务GetAllPostsFromDb()
{
IMongoCollection_postCollection=db.GetCollection(“userpost”);
SortDefinitionBuilder sortBy=Builders.Sort;
SortDefinition sort=sortBy.Descending(x=>x.PostDate);
List postTask=wait postCollection.Find(=>true).Sort(Sort).tolistSync();
返回postTask;
}
我看过一些例子,它似乎是第二种变体,但当我使用它时,我的网页似乎陷入了“等待回复”模式。

GetAllPosts()
设为异步方法,然后等待调用
GetAllPostsFromDb()
。这将返回一个
列表
对象

public async IList<Post> GetAllPosts() 
{
    List<Post> _postQueryable = await GetAllPostsFromDb();
    return _postQueryable;
}
public异步IList GetAllPosts()
{
List_postQueryable=await GetAllPostsFromDb();
返回_postQueryable;
}
创建
GetAllPosts()
一个异步方法,然后等待调用
GetAllPostsFromDb()
。这将返回一个
列表
对象

public async IList<Post> GetAllPosts() 
{
    List<Post> _postQueryable = await GetAllPostsFromDb();
    return _postQueryable;
}
public异步IList GetAllPosts()
{
List_postQueryable=await GetAllPostsFromDb();
返回_postQueryable;
}

您可以编辑以添加在控制器中调用GetAllPostsFromDb()的方式吗?我不是在控制器中调用GetAllPostsFromDb。我正在调用GetAllPostsFromDb()。结果是GetAllPosts()上面的方法不是异步的。GetAllPosts是在控制器中调用的。您可以编辑以添加在控制器中调用GetAllPostsFromDb()的方式。我不是在我的控制器中调用GetAllPostsFromDb。我正在调用GetAllPostsFromDb()。结果是GetAllPosts()上面的方法不是异步的。GetAllPosts是在Controlleri中调用的如果我将其设置为异步,那么如何在我的MVC控制器中引用它?MVC控制器也应该是异步的吗?如果我将其设置为异步的,那么如何在MVC控制器中引用它?MVC控制器也应该是异步的吗?