[英]C# MongoDB Driver 2.2 Async Methods
我對MongoDB CSharp驅動程序比較陌生。 我以前沒有使用過異步方法。 我已經創建了一個ASP.NET MVC項目,並且正在使用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;
}
}
}
我在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;
}
我已經看到了一些示例,並且似乎是第二種方法是正確的方法,但是當我使用它時,我的網頁似乎停留在“等待回復”模式下。
使GetAllPosts()
為異步方法,然后等待您對GetAllPostsFromDb()
調用。 這將返回一個List<Posts>
對象。
public async IList<Post> GetAllPosts()
{
List<Post> _postQueryable = await GetAllPostsFromDb();
return _postQueryable;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.