问题标签 [pomelo-entityframeworkcore-mysql]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
525 浏览

asp.net-core-webapi - 不能多次重新配置 DbContext

我有一个使用 Pomelo 提供程序(版本 2.1.0-rc1-final)与 MySQL 数据库通信的 .Net Core 2.1 Web API。因为这是一个多租户应用程序,API 需要根据正在连接的租户更改数据库。前端 Web 应用程序通过在 HTPP 请求中包含 TenantId 标头来告诉 API 哪个租户正在执行请求。

当 API 接收到来自前端的 HTTP 请求时,我在 API 的管道中有一个服务从请求中读取 TenantId,然后用于确定 API 必须连接到哪个数据库。

为了连接各种数据库,我更改了 DbContext 的连接字符串。我在 OnConfiguring 事件中执行此操作:

我的问题是这第一次有效,但是第二次触发此事件时,当它执行该optionsBuilder.UseMySql(connectionString);行时,它会引发此异常:

已添加具有相同密钥的项目。键:Pomelo.EntityFrameworkCore.MySql.Infrastructure.Internal.MySqlOptionsExtension

它只让我配置 DbContext 一次。每次调用 API 操作端点时,我都需要重新配置它。有任何想法吗?

0 投票
1 回答
151 浏览

c# - MySQL.Data 到 Pomelo - MysqlReader 更改

我正在寻找将我的脚本从 Oracle 转换为 Pomelo,我正在为我的脚本使用 EntityFramework,并使用 MySQL 命令和阅读器来访问我的 XenForo 安装。转换时,我有一行代码,reader.GetInt32以前是字符串输入,但现在要求输入 int。该列是第一列,所以这会是 1 吗?

IE

reader.GetInt32(1)?

0 投票
1 回答
8738 浏览

mysql - 使用 Pomelo 和 .Net Core 2.1 搭建 MySQL 视图

显然,.Net Core 2.1 现在支持视图。我想知道是否可以使用 Pomelo 搭建视图,如果可以,语法是什么?我尝试了带有视图的“表”语法,但它没有用:

它运行,但它只生成一个 dbContext - 它不生成模型。

我正在使用 Pomelo 2.1.1 和 Visual Studio 2017 (15.7.5)。我的项目是一个 .Net Core 2.1 Web API。在后端,我有 MySQL Server 5.6.30。

0 投票
1 回答
1138 浏览

mysql - Pomelo MySql .net core 2 - 默认执行超时

我们在生产环境中使用 Pomelo MySql 半年了,它工作得很好,但偶尔我们会遇到这样的异常:

appsettings.json 中的连接字符串如下所示:

"MySqlConnection": "server=somesql;userid=user;password=pass;database=test;"

所以没什么特别的。

我的问题是 pomelo 中默认的命令执行超时是多少?如何通过连接字符串更改它?

在 DbContext 中执行这样的代码

总是给我空值。

0 投票
1 回答
790 浏览

mysql - 无法添加或更新子行:外键约束失败 MYSQL:EF Core

尝试在 MySQL 数据库中插入数据时出现 DbUpdateException。已使用 Pomelo.EntityFrameworkCore.MySql 包从数据库中搭建模型,该项目是在 .net core 2.1 中创建的

堆栈跟踪:

异常消息:无法添加或更新子行:外键约束失败 ( HMEBooking. Invoice, CONSTRAINT Invoice_ibfk_7FOREIGN KEY ( BookingId) REFERENCES Booking(Id)在删除时没有操作更新没有操作)堆栈跟踪:在 C:\projects\mysqlconnector\src\MySqlConnector\MySql.Data.MySqlClient\MySqlDataReader.cs:line 中的 MySql.Data.MySqlClient.MySqlDataReader.ActivateResultSet(ResultSet resultSet) C:\projects\mysqlconnector\src\MySqlConnector\MySql.Data.MySqlClient\MySqlDataReader.cs 中的 MySql.Data.MySqlClient.MySqlDataReader.ReadFirstResultSetAsync(IOBehavior ioBehavior) 的 93:MySql.Data.MySqlClient.MySqlDataReader.CreateAsync 的第 328 行( MySqlCommand 命令,CommandBehavior 行为,IOBehavior ioBehavior)在 C:\projects\mysqlconnector\src\MySqlConnector\MySql.Data.MySqlClient\MySqlDataReader.cs:MySqlConnector.Core.TextCommandExecutor.ExecuteReaderAsync 的第 313 行(字符串 commandText,MySqlParameterCollection parameterCollection,CommandBehavior 行为, IOBehavior IOBehavior,C:\projects\mysqlconnector\src\MySqlConnector\Core\TextCommandExecutor.cs 中的 CancellationTokenCancellationToken):C:\projects\mysqlconnector\src\MySqlConnector\MySql 中 MySql.Data.MySqlClient.MySqlCommand.ExecuteDbDataReader(CommandBehavior 行为)的第 73 行.Data.MySqlClient\MySqlCommand.cs:Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.Execute 的第 168 行(IRelationalConnection 连接,DbCommandMethod 执行方法,IReadOnlyDictionary执行(IRelationalConnection 连接,DbCommandMethod 执行方法,IReadOnlyDictionary执行(IRelationalConnection 连接,DbCommandMethod 执行方法,IReadOnlyDictionary2 parameterValues) at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.ExecuteReader(IRelationalConnection connection, IReadOnlyDictionary2 parameterValues) 在 Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.Execute(IRelationalConnection 连接)

有 Booking、BookingDetail 和 Invoice 模型。BookingDetail 与 Booking 有关系,Invoice 与 Booking 和 BookingDetail 有关系。

向数据库添加条目时出现错误无法添加或更新子行:外键约束失败。但是当我在非 .net 核心应用程序中使用相同的模型时,它可以工作

如果我在某个地方出错,请告诉我。感谢您的帮助。

以下是使用的模型

在 booking-bookingDetail、booking-invoice、bookingDetail - invoice 之间有一对多的关系

EF Core 版本:2.1 数据库提供程序:Pomelo.EntityFrameworkCore.MySql IDE:Visual Studio 2017

0 投票
1 回答
360 浏览

mysql - 在 Asp.Net Core 中使用 Pomelo.EntityFrameworkCore.MySql 获取模型列表 Json

如何返回MenuList JSON string使用Pomelo?当我在我的中添加一个MenuList时,我Model会收到一个错误,显示“未知列菜单列表”。因为在我的MySqlMenus.tbl 中没有MenuList列。

请给我任何解决方案,在此先感谢!

菜单.cs

菜单控制器.cs

0 投票
2 回答
411 浏览

c# - LINQ 按多列分组并计数

我的 .NET Core 应用程序中有以下 LINQ 代码。我正在使用带有 Pomelo 的 EF Core 作为 MySQL 的驱动程序。

当代码尝试运行最后一行时,我得到以下异常。

无法解析表达式“g.ToList()”:当前不支持该方法“System.Linq.Enumerable.ToList”的重载。

我错过了什么?

0 投票
2 回答
962 浏览

.net-core - 在 MySQL 上调用存储过程时,EF Core 上的转换错误(使用 Pomelo)

我在使用 EF Core 的 .Net Core 2.2 Web API 中遇到问题。我在 MySQL 数据库上调用存储过程(我使用的是 Pomelo 2.1.4)。

它抱怨无法从 DbNull 转换为 String:

错误:无法将“System.DBNull”类型的对象转换为“System.String”类型。 在 C:\projects\mysqlconnector\src\MySqlConnector\MySql.Data.MySqlClient\MySqlDataReader.cs:第 210 行的 MySql.Data.MySqlClient.MySqlDataReader.GetString(Int32 ordinal) 在 Microsoft.EntityFrameworkCore 的 lambda_method(Closure, DbDataReader) 处。 Storage.Internal.TypedRelationalValueBufferFactory.Create(DbDataReader dataReader) 在 Microsoft.EntityFrameworkCore.Query.Internal.AsyncQueryingEnumerable 1.AsyncEnumerator.BufferlessMoveNext(DbContext _, Boolean buffer, CancellationToken cancellationToken) at Pomelo.EntityFrameworkCore.MySql.Storage.Internal.MySqlExecutionStrategy.ExecuteAsync[TState,TResult](TState state, Func4 操作,Func 4 verifySucceeded, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Query.Internal.AsyncQueryingEnumerable1.AsyncEnumerator.MoveNext(CancellationToken cancelToken) 在 System.Linq.AsyncEnumerable.SelectEnumerableAsyncIterator2.MoveNextCore(CancellationToken cancellationToken) in D:\a\1\s\Ix.NET\Source\System.Interactive.Async\Select.cs:line 106
at System.Linq.AsyncEnumerable.AsyncIterator
1.MoveNext(CancellationToken cancelToken) 在 D:\a\1\s\Ix.NET\Source\System.Interactive.Async\AsyncIterator.cs:Microsoft.EntityFrameworkCore.Query.Internal.AsyncLinqOperatorProvider.ExceptionInterceptor 1.EnumeratorExceptionInterceptor.MoveNext(CancellationToken cancellationToken) at System.Linq.AsyncEnumerable.Aggregate_[TSource,TAccumulate,TResult](IAsyncEnumerable1 源的第 98 行, T积累种子,功能3 accumulator, FuncD:\a\1\s\Ix.NET\Source\System.Interactive.Async\Aggregate.cs 中的 2 resultSelector, CancellationToken cancelToken):PropWorx.API.Controllers.FileActivitiesController.GetFileActivities(Int32 fileId, String fromDate 的第 120 行, String toDate) 在 C:\Users\fabsr\source\repos\PropWorx.API\PropWorx.API\Controllers\FileActivitiesController.cs:Microsoft.AspNetCore.Mvc.Internal.ActionMethodExecutor.TaskOfIActionResultExecutor.Execute 的第 101 行(IActionResultTypeMapper 映射器, ObjectMethodExecutor 执行器,对象控制器,Object[] 参数)在 System.Threading.Tasks.ValueTask`1.get_Result() 在 Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeActionMethodAsync() 在 Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker。在 Microsoft.AspNetCore.Mvc.Internal 上调用 NextActionFilterAsync()。ControllerActionInvoker.Rethrow(ActionExecutedContext context) 在 Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) 在 Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync() 在 Microsoft.AspNetCore .Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter() 在 Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext 上下文) 在 Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted ) 在 Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync() 的 Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync()在 Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync() 在 Microsoft.AspNetCore.Mvc 的 Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync() 在 Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) Rethrow(ActionExecutedContext context) .Internal.ResourceInvoker.InvokeNextResourceFilter() at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context) at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync() 上的 Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync()在 Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync() 在 Microsoft.AspNetCore.Mvc 的 Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync() 在 Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) Rethrow(ActionExecutedContext context) .Internal.ResourceInvoker.InvokeNextResourceFilter() at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context) at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync() 上的 Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync()在 Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter() 在 Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext) 在 Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()上下文)在 Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync() 在 Microsoft.AspNetCore.Mvc.Internal 的 Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)。 ResourceInvoker.InvokeAsync()在 Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter() 在 Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext) 在 Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()上下文)在 Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync() 在 Microsoft.AspNetCore.Mvc.Internal 的 Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)。 ResourceInvoker.InvokeAsync()InvokeNextResourceFilter() 在 Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context) 在 Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) 在 Microsoft.AspNetCore.Mvc .Internal.ResourceInvoker.InvokeFilterPipelineAsync() 在 Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync()InvokeNextResourceFilter() 在 Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context) 在 Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) 在 Microsoft.AspNetCore.Mvc .Internal.ResourceInvoker.InvokeFilterPipelineAsync() 在 Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync()
在 Microsoft.AspNetCore.Routing.EndpointMiddleware.Invoke(HttpContext httpContext) 在 Microsoft.AspNetCore.Routing.EndpointRoutingMiddleware.Invoke(HttpContext httpContext) 在 PropWorx.API.Middlewares.TenantIdentifier.Invoke(HttpContext httpContext, SharedContext sharedContext) 在 C:\Users \fabsr\source\repos\PropWorx.API\PropWorx.API\Middlewares\TenantIdentifier.cs:Microsoft.AspNetCore.Builder.Extensions.MapWhenMiddleware.Invoke(HttpContext context) at Microsoft.AspNetCore.Builder.Extensions.MapWhenMiddleware 的第 73 行。在 Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context) 在 Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext) 在 Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware 调用(HttpContext 上下文)。在 Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.Invoke(HttpContext context) 的 Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context) 的 Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)

问题线是:

FileActivity 模型是:

最后,DbContext 中的映射是:

我整天都在绞尽脑汁想弄清楚这个……有什么想法吗?

0 投票
2 回答
3501 浏览

asp.net-core - _context.SaveChanges() 有效,但 await _context.SaveChangesAsync() 无效

我正在努力理解一些事情。我有一个 .Net Core 2.2 Web API,带有一个 MySQL 8 数据库,并使用 Pomelo 库连接到 MySQL 服务器。

我有一个看起来像这样的 PUT 操作方法:

根据我在上面代码片段中的评论,当我调用_context.SaveChanges()时,它可以工作(即它更新 MySQL 数据库中的相关记录,并返回 1)但是当我调用await _context.SaveChangesAsync()时,它不起作用(它不更新记录,并且返回 0)。它不会抛出异常或任何东西 - 它只是不会更新记录。

有任何想法吗?

0 投票
1 回答
3289 浏览

c# - 使用 Pomelo EF net-core 3.0 创建迁移时出错,数据库:MySql

我正在创建一个使用 EF 和 Pomelo.EntityFrameworkCore.MySql 连接到 MySql 的 Web 服务。项目编译正常,但是使用“Add-Migration newVersion”命令时出现错误:

“来自程序集'Pomelo.EntityFrameworkCore.MySql,版本 = 2.2.0.0,文化 = 中性,PublicKeyToken = null '的 Pomelo.EntityFrameworkCore.MySql.Infrastructure.Infrastructure.Internal.MySqlOptionsExtension' 类型中的方法'get_Info'没有实现。”

我不确定是什么原因(版本不匹配或设置不正确),我是 net-core 的新手,如果你能提供帮助,谢谢。代码在 Github:

https://github.com/vcalazas/project19092019

错误图片