我已将 Cosmos DB 集成到我的 ASP.NET 核心 API 项目中,使用 Cosmos DB 提供程序附带的最新 EF 核心包。
当在本地ASF集群中运行时,我能够成功地使用这个提供者,连接到本地Cosmos DB模拟器实例。然而,当试图在本地ASF或Azure托管的ASF中运行时,我无法连接到Azure Cosmos DB实例。由于某种原因,在初始化数据库/集合的种子时,我一直收到400 BadRequest。
以下行正在生成错误:
var created = await context.Database.EnsureCreatedAsync();
例外:
BadRequest atMicrosoft.EntityFrameworkCore.Cosmos.Storage.Internal.CosmosClient.CreateDocumentCollectionIfNotExistsOnceAsync(DbContext_, String Coll的Id, CenseationToken取消代币)
atMicrosoft.EntityFrameworkCore.Storage.ExecutionStrategy.ExecuteImplementationAsync[TState, TResult](Func4操作, Func
4验证成功,TState, CenseationToken取消代币)
atMicrosoft.EntityFrameworkCore.Storage.ExecutionStrategy.ExecuteImplementationAsync[TState, TResult](Func4操作, Func
4验证成功,TState, CenseationToken取消代币)atMicrosoft.EntityFrameworkCore.Cosmos.Storage.Internal.CosmosDatabaseCreator.EnsureCreatedAsync(CenseationToken取消代币)atInfrastructure.SystemDataContextSeed.SeedAsync(SystemDataContext上下文)in基础设施\SystemDataContextSeed.cs: line 21 atxtensions.IWebHostExtensions.Seed(IWebHost webhost)in Extis\IWebHostExtensions.cs: line 23 at Api.
我试过的:
使用的endpoint详细信息的形式如下:
"Cosmos": {
"EndPoint": "https://xxxx-sqlapi.documents.azure.com:443",
"AuthKey": "xxx==",
"DatabaseName": "AccountService"
},
连接Cosmos DB提供者的扩展方法:
public static IServiceCollection AddCosmosSettings(this IServiceCollection services, IConfiguration configuration)
{
services.AddEntityFrameworkCosmos()
.AddDbContext<SystemDataContext>(options =>
{
options.UseCosmos(configuration["Cosmos:EndPoint"], configuration["Cosmos:AuthKey"], configuration["Cosmos:DatabaseName"]); ;
},
ServiceLifetime.Scoped //Showing explicitly that the DbContext is shared across the HTTP request scope (graph of objects started in the HTTP request)
);
return services;
}
任何想法都非常感谢!
我在新创建的CosmosDB帐户中遇到了这个错误。有些事情是可行的,但我也遇到了类似这样的错误:EF Core.encurecreated()调用的400个错误,以及尝试跳过该调用时的404个错误,只是.SaveChanges()。
我最终删除了该CosmosDB帐户并创建了一个新帐户,这次一切正常。
我使用了Microsoft.EntityFrameworkCore。宇宙(6.0.0)。
哦,我在“Default-Web-EastUS”资源组中创建了新的CosmosDB帐户,而之前的尝试使用了“Default-Storage-EastUS”帐户。我怀疑这件事,但想记下一切,以防我将来必须谷歌自己的答案;-)
作为参考,EF Core 2.2中的Cosmos DB provider是预览版,不适合用于Azure托管的Cosmos DB。这是因为在某些地方,头丢失了,这显然不是模拟器的问题,但在对Azure执行时会导致400。
我观察时间最长的问题是,当它试图创建文档集合时,我得到了一个400。在研究了EF核心源代码之后,我发现它没有发送任何分区键。在当前的Cosmos DB实现中,实际上根本没有分区键的实现。因为我在Azure中创建了一个跨集合共享吞吐量的数据库,所以显然需要在集合级别提供一个分区键。
我试图连接我的实体框架在MySQL数据库,但当我连接这个错误发生 找不到具有固定名称“mysql.data.mysqlclient”得ADO.NET提供程序得实体框架提供程序.确保在应用程序配置文件的“Entity Framework”部分中注册了提供程序。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=260882。 这是我的类库whit实体的a
错误消息: System.InvalidOperationException:未找到具有固定名称“System.Data.SqlClient”得ADO.NET提供程序得实体框架提供程序.确保在应用程序配置文件的“Entity Framework”部分中注册了提供程序。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=260882。
问题内容: 我正在尝试将Entity Framework与MySQL配合使用,但出现上述错误。我安装了最新的MySQL连接器。 完整错误为: 但是,我找不到任何建议说明您如何在“ entityFramework”部分中进行注册的内容。 其他一些帖子(例如)建议将提供程序添加到该 部分中,如下所示: 但这不起作用,因为它声称名称是重复的。而且,如果我实际上遍历了,我可以看到最后一个是MySQL提供程
我有一个与问题“找不到具有固定名称”System.Data.SqlClient“的ADO.NET提供程序的实体框架提供程序”中提供的问题类似的问题,错误包含以下消息: “具有固定名称”System.Data.SqlClient“的ADO.NET提供程序未在计算机或应用程序配置文件中注册,或者无法加载。有关详细信息,请参阅内部异常。” 正如相关问题的答案所提示的,我已经通过包管理器控制台重新安装了实
在nuget下载EF6并尝试运行我的项目后,它返回以下错误: 找不到具有固定名称“System.Data.SqlClient”得ADO.NET提供程序得实体框架提供程序.确保在应用程序配置文件的“Entity Framework”部分中注册了提供程序。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=260882。
我有一个ASP MVC.NET核心(C#)项目,由于业务原因,SQL表不能有外键,因此,EF模型不映射关系(Entity.HasMany...)。 假设EF为实体生成一个模型,为生成一个模型。我想知道他们两个之间的关系。一个有多个并且一个属于一个。该任务在数据库中有项目Id(但请记住,它没有设置为FK)。 现在,我想通过to Entity获得一个项目列表,同时获得每个项目的任务列表。我通过创建一个