C# 在ASP.NET核心Blazor中使用MongoDB作为服务
因此,我创建了以下MongoDBService:C# 在ASP.NET核心Blazor中使用MongoDB作为服务,c#,asp.net-core,blazor,C#,Asp.net Core,Blazor,因此,我创建了以下MongoDBService: public class MongoDBService { private const String CONNECTION_STRING = "mongodb://localhost:27017"; private const String DATABASE_NAME = "TestingTesting"; private readonly MongoClient _Client;
public class MongoDBService
{
private const String CONNECTION_STRING = "mongodb://localhost:27017";
private const String DATABASE_NAME = "TestingTesting";
private readonly MongoClient _Client;
public MongoDBService()
{
_Client = new MongoClient(CONNECTION_STRING);
}
public IMongoCollection<T> GetCollection<T>()
{
return _Client.GetDatabase(DATABASE_NAME).GetCollection<T>(typeof(T).Name);
}
}
我还启动了我的MongoDBService的一个实例:
Project.Services.MongoDBService mongo = new Services.MongoDBService();
但当我尝试使用它时,在FindAsync()方法下会出现一条红色的曲线:
异步任务GetAllClocks()
{
MongoDB.Driver.filterDefinitionFilter=MongoDB.Driver.Builders.filter.Empty;
MongoDB.Driver.IMongoCollection cursor=wait mongo.GetCollection().FindAsync(过滤器);
}
错误是:
CS0411:无法从用法推断方法“IMongoCollection.FindAsync(FilterDefinition、FindOptions、CancellationToken)”的类型参数。尝试指定类型
我已经在谷歌上搜索了一段时间,虽然听起来我要离开编译器来决定使用什么类型,但我确信我明确指定了Project.Data.Clock类型。完全被难住了。有什么想法吗?
FindOptions
需要两个类型参数,您只提供一个。如果希望返回时钟
对象,请尝试FindOptions
猜测:FindOptions需要两个类型参数,而您只提供一个。如果你想返回一个时钟对象,试试FindOptions。嘿,Ricardo,你说得对,我创建了一个新的FindOptions实例,并将它作为参数传递给FindAsync方法。奇怪的是,我以前从来没有这样做过,这是我第一次遇到这个错误。嘿,里卡多,谢谢你。知道为什么在这个例子中我必须传递FindOptions参数吗?通常FilterDefinition.Empty足以满足我的计算机中的FindAsync(),使用NuGet packages 2.11.2,我不需要传递FindOptions参数。你用的是什么版本?我拥有的是:client.GetDatabase(“”)。GetCollection(“”)。FindAsync(filter)我的MongoDB.Driver和MongoDB.Driver.Core也都是2.11.2!很奇怪。
@inject Project.Services.MongoDBService
Project.Services.MongoDBService mongo = new Services.MongoDBService();
async Task GetAllClocks()
{
MongoDB.Driver.FilterDefinition<Project.Data.Clock> filter = MongoDB.Driver.Builders<Project.Data.Clock>.Filter.Empty;
MongoDB.Driver.IMongoCollection<Project.Data.Clock> cursor = await mongo.GetCollection<Project.Data.Clock>().FindAsync(filter);
}