问题标签 [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 投票
3 回答
1209 浏览

c# - 解析 JSON 数组以建模 .NET Core 导致空集

通过调用DbSet<T>.FromSqlRaw(),我可以调用数据库中的存储过程,它返回如下结果集:

Numbers是一个VARCHAR包含 JSON 数组的字段SearchContactsNumber

因此,例如,结果集可能是这样的:

调试 TestController.Index 端点:

返回:

在此处输入图像描述

如何归档 json 字符串的完整绑定?

Pomelo.EntityFrameworkCore.MySql (3.2.3)在 ASP.NET Core 3.1 MVC 项目中使用 MySQL 8 数据库。

0 投票
1 回答
623 浏览

linq - 在 Entity Framework Core 3.1.10 中使用 Take 时出现异常

这是我尝试执行的查询:

这些是实体:

执行时我得到一个这样的异常:

失败:Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware[1] 执行请求时发生未处理的异常。System.InvalidOperationException:使用错误的属性名称调用 EF.Property。在 Microsoft.EntityFrameworkCore.Query.RelationalSqlTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression) 在 System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor) 在 System.Linq.Expressions.ExpressionVisitor.Visit(Expression node) 在 Microsoft.EntityFrameworkCore.Query.RelationalSqlTranslatingExpressionVisitor .VisitBinary(BinaryExpression binaryExpression) 在 Pomelo.EntityFrameworkCore.MySql.Query.ExpressionVisitors.Internal.MySqlSqlTranslatingExpressionVisitor.VisitBinary(BinaryExpression binaryExpression) 在 System.Linq.Expressions.BinaryExpression。
在 Microsoft.EntityFrameworkCore.Query.QueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression) 在 Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression) 在 System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor) 在 System.Linq.Expressions.ExpressionVisitor .Visit(Expression node) at Microsoft.EntityFrameworkCore.Query.QueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression) at Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression) at System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor) at System .Linq。Microsoft.EntityFrameworkCore.Query.QueryCompilationContext.CreateQueryExecutor[TResult](表达式查询)的 Expressions.ExpressionVisitor.Visit(表达式节点)Microsoft.EntityFrameworkCore.Storage.Database.CompileQuery[TResult](表达式查询,布尔异步)在 Microsoft.EntityFrameworkCore .Query.Internal.QueryCompiler.CompileQueryCore[TResult](IDatabase 数据库,表达式查询,IModel 模型,布尔异步)在 Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.<>c__DisplayClass12_0Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.<>c__DisplayClass12_0 上的 CompileQueryCore[TResult](IDatabase 数据库、表达式查询、IModel 模型、布尔异步)Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.<>c__DisplayClass12_0 上的 CompileQueryCore[TResult](IDatabase 数据库、表达式查询、IModel 模型、布尔异步)1.<ExecuteAsync>b__0() at Microsoft.EntityFrameworkCore.Query.Internal.CompiledQueryCache.GetOrAddQueryCore[TFunc](Object cacheKey, Func1 编译器)在 Microsoft.EntityFrameworkCore.Query.Internal.CompiledQueryCache.GetOrAddQuery[TResult](Object cacheKey, Func 1 compiler) at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.ExecuteAsync[TResult](Expression query, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryProvider.ExecuteAsync[TResult](Expression expression, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable1.GetAsyncEnumerator(CancellationToken cancelToken) 在 System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable1.GetAsyncEnumerator() at Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.ToListAsync[TSource](IQueryable1 来源,CancellationToken 取消令牌)在 MoneyAppBackend.Controllers.ContestsController._GetLas10PastEvents(EventType 类型,字符串语言)在 /Users/juanjoseduran/Documents/Development/Projects/dotnet/MoneyAppBackend/MoneyAppBackend/Controllers/ContestsController.cs:在 MoneyAppBackend 的第 106 行。 Controllers.ContestsController.GetAll(EventType type, String lang, String uuid) in /Users/juanjoseduran/Documents/Development/Projects/dotnet/MoneyAppBackend/MoneyAppBackend/Controllers/ContestsController.cs:line 57 at lambda_method(Closure, Object) at Microsoft .Extensions.Internal.ObjectMethodExecutorAwaitable.Awaiter.GetResult() at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper 映射器,ObjectMethodExecutor 执行器,对象控制器,Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|10_0(ControllerActionInvoker 调用程序,任务 lastTask,State next, Scope 范围,对象状态,Boolean isCompleted) 在 Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context) 在 Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) 在 Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync() --- 在 Microsoft.AspNetCore.Mvc.Infrastructure 中从先前引发异常的位置结束堆栈跟踪。Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|19_0(ResourceInvoker 调用程序,任务 lastTask,下一个状态,作用域范围,对象状态,布尔 isCompleted)。Microsoft 的 ResourceInvoker 调用程序,任务任务,IDisposable 范围) .AspNetCore.Routing.EndpointMiddleware.g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger) 在 Microsoft.AspNetCore.Builder.Extensions.MapMiddleware.Invoke(HttpContext context) 在 Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)IDisposable 范围)在 Microsoft.AspNetCore.Builder.Extensions.MapMiddleware.Invoke(HttpContext 上下文)在 Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware 的 Microsoft.AspNetCore.Routing.EndpointMiddleware.g__AwaitRequestTask|6_0(端点端点,任务 requestTask,ILogger 记录器)。调用(HttpContext 上下文)IDisposable 范围)在 Microsoft.AspNetCore.Builder.Extensions.MapMiddleware.Invoke(HttpContext 上下文)在 Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware 的 Microsoft.AspNetCore.Routing.EndpointMiddleware.g__AwaitRequestTask|6_0(端点端点,任务 requestTask,ILogger 记录器)。调用(HttpContext 上下文)

如果我删除 Take 呼叫,它可以正常工作。

0 投票
1 回答
86 浏览

.net - 我是否必须显式引用我要使用的包的隐式依赖项?

我正在使用Pomelo.EntityFrameworkCore.MySql,这取决于MySqlConnector. 我没有MySqlConnector在我的.csproj文件中明确引用,该项目似乎编译和运行良好。

但是,我不确定不MySqlConnector从我的项目中明确引用是否有任何缺点?

我的项目是一个使用 WPF 的 .NET 5.0 桌面应用程序。

0 投票
1 回答
341 浏览

mysql - Pomelo.EntityFrameworkCore.MySql 数据库优先和生成列

在我的表中,我有一个 Decimal 类型的 Generated 列,

这是其他 3 列也是十进制类型的总和,当我执行“脚手架”时会出现问题,生成的模型以这种格式附带此列

并且在生成的上下文中也参考了

如果我尝试在表中插入一些记录,则会出现错误,即使在 Generated 列中没有通知任何内容,我也必须在上下文和模型中删除该列的引用才能工作。脚手架是否有任何配置可以忽略这种类型的列或任何特殊处理?

如果没有,每次我做脚手架时,我都必须手动调整所有字段,这将是很多工作。

Pomelo.EntityFrameworkCore.MySql v3.2.4

谢谢!

0 投票
1 回答
613 浏览

mysql - EF .NET Core 5 异常中的 LINQ 表达式“OUTER APPLY 投影映射”

从 .NET Core 2.x 迁移到 .NET Core 5.0 后,我们面临着这个问题。

错误:(添加为代码以提高可读性)

代码部分:

我尝试了什么: 根据这些 Microsoft 链接,不支持Breaking ChangesQueryable projection,我尝试并AsEnumerable()相应地应用了更改,如您在上面看到的。

现在需要做哪些改变?

图书馆和环境:

  1. 数据库 => MySql
  2. 库 => Pomelo.EntityFrameworkCore.MySql (5.0.0-alpha.2) Nuget 链接

我感觉这个 MySql 库导致问题或EF Core 5 重大更改

编辑1:

0 投票
2 回答
1164 浏览

c# - 例外 - 使用 MYSql 服务器时“此 MySqlConnection 已在使用中”。但是,相同的 Linq 查询适用于 MS SQL Server

我正在使用 .NET Core 框架 (5.0) 开发质量保证应用程序。最初,我使用了 MS SQL Server DB,它运行良好。但是,现在由于需求变化,我现在已经转移到 MYSQL Server。

我已经使用代码优先方法(实体框架)成功地集成了数据库。此外,我正在使用 NuGet 包Pomelo.EntityFrameworkCore.MySql并且一切正常,除了下面提到的 Linq 查询,我遇到异常 - This MySqlConnection is already in use

我提到了其他类似的问题,但我无法解决这个问题,因为我不确定如何关闭 SQL 连接,因为我使用的是 Linq Query 而不是实际的 SQL Join。任何帮助,将不胜感激!

0 投票
2 回答
458 浏览

c# - 实体框架在外键条件下产生左连接

我有 2 个模型:

我想用这个查询来检索某个用户的所有问卷:

它可以工作,但实体框架会产生这个 sql 查询:

在我看来,左连接是不必要的。请问有什么解决方法可以避免这种左连接吗?先感谢您。

0 投票
1 回答
626 浏览

mysql - EF Core (usdig Raw Sql) 中的 System.InvalidCastException 错误,当查询不返回行时(但在查询返回行时工作)

在 .Net 5 Web Api 应用程序中,我正在从 MySql 表中读取一些行(使用 Pomelo 库)。我正在使用原始 sql 查询。所以:

奇怪的是,这很好用,直到我提供一个不存在的参数(“propertyId”)——这样查询就不会返回任何行。在这种情况下,我得到以下异常:

我不明白当查询返回行时它如何工作正常(因此它将数据库数据正确映射到模型字段),但是当查询不返回任何行时(我认为这应该只是导致列表零项)它会引发异常。

该异常表明将值从数据库转换为 int32 时出现问题。起初,我认为它可能是一个空值,它试图映射到我的模型中的不可为空的整数,但我的模型中的所有整数字段都是可空的。但即便如此,由于查询没有返回任何行,所以它肯定不应该是一个问题,因为没有什么可以映射?

我知道如果没有看到数据库结构、模型、查询等,很难为我提供帮助。只是查询和表都很大,我想也许有人以前遇到过这个问题,在调用查询之前一切正常不返回任何行,在这种情况下会引发 System.InvalidCastException。

这是我要映射到的模型,因为它的价值:

0 投票
0 回答
793 浏览

c# - 执行 DbCommand (3ms) 失败 [Parameters=[], CommandType='Text'

我正在尝试使用我.Net core console app和我的本地MySQL使用entity framework core Code first方法中的模型创建迁移,一切都很好,但是在创建迁移并尝试使用之后,update-database我在NugetPackage Console

楷模:

领域

学生

数据库上下文:

错误:

屏幕

我使用Pomelo.EntityFrameworkCore.MySql 5.0.0-alpha.2

那么请对此问题有任何帮助吗?

0 投票
2 回答
342 浏览

c# - 有没有办法将已经打开的 MySQL 连接传递给 EF Core DbContext ?用于多线程目的

我已经苦苦挣扎了 2 天,为我的简单场景找到合适的解决方案。

场景我想
在 .Net Core Parallel 循环中完成多个数据库访问,该循环将在同一个数据库中插入多个项目。

已知限制

  1. EF Core 的 DBContext 不是线程安全的(我们需要在每个 trhead 中重新创建它们)
  2. MySQL 服务器不接受使用同一事务建立的 2 个连接
  3. 似乎我们无法将已经打开的连接传递给 DBContext
  4. EF Core 每次与数据库交互时都会在内部打开和关闭与数据库的连接

例外

当前不支持多个同时连接或在同一事务中具有不同连接字符串的连接。

在 MySql.Data.MySqlClient.MySqlConnection.Open() 在 Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable 在 Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open(Boolean errorsExpected) 在 Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenDbConnection(Boolean errorsExpected) 1.Enumerator.BufferlessMoveNext(DbContext _, Boolean buffer) at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable1.Enumerator.MoveNext() 在 Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider._TrackEntities[TOut,TIn](IEnumerable 1 results, QueryContext queryContext, IList1 entityTrackingInfos, IList 1 entityAccessors)+MoveNext() at Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider.ExceptionInterceptor1.EnumeratorExceptionInterceptor.MoveNext() 在 System.Collections.Generic.List1.AddEnumerable(IEnumerable1 个可枚举)在 System.Linq.Enumerable.ToList[TSource](IEnumerable`1 源)的 CloseTheMonth.Backend.Data.Repositories.AccountUserRightRepository.ListAccounts(Guid userId) 在 C:\Work\GitHub\CloseTheMonth\Backend\CloseTheMonth。 Data\Repositories\AccountUserRightRepository.cs:C:\Work\GitHub\CloseTheMonth\Backend\CloseTheMonth.Services\AccountUserRightService.cs:CloseTheMonth.Backend.Services.AccountUserRightService.ListAccounts(Guid userId) 的第 44 行:CloseTheMonth.Backend 的第 53 行.Controllers.AppController.Init(字符串授权,AppInitRequest 请求)在 C:\Work\GitHub\CloseTheMonth\Backend\CloseTheMonth.Backend\Controllers\AppController.cs:line 101

反思...
如果我可以像这样在全局范围内打开一个连接,并将其传递给我的 DBContexts,那就可以了。但我检查了 EF Core 和 Pomelo 源代码,但没有找到实现类似目标的方法。

也许除了 Pomelo 之外的其他一些 EF Core MySQL 驱动程序可以做到这一点?

我将 MySQL 服务器 (8.0.22) 与 Pomelo.EntityFrameworkCore.MySql (2.1.4) 一起使用