Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

659
Views
System.TypeLoadException: método 'Crear' en el tipo 'MySql.Data.EntityFrameworkCore.Query.Internal.MySQLSqlTranslatingExpressionVisitorFactory'

Estoy tratando de agregar un nuevo usuario a la base de datos con el siguiente código:

 public async void SeedUsers(){ int count=0; if(count>0){ return; } else{ string email="jujusafadinha@outlook.com.br"; _context.Add(new User{LoginEmail=email}); await _context.SaveChangesAsync(); } }

Pero me sigue dando el siguiente error:

System.TypeLoadException: el método 'Create' en el tipo 'MySql.Data.EntityFrameworkCore.Query.Internal.MySQLSqlTranslatingExpressionVisitorFactory' from >assembly 'MySql.Data.EntityFrameworkCore, Version=8.0.22.0, Culture=neutral, >PublicKeyToken=c5687fc88969c44d' no tener una implementación. en MySql.Data.EntityFrameworkCore.Extensions.MySQLServiceCollectionExtensions.AddEntityFrameworkMySQL(IServ>iceCollection services) en MySql.Data.EntityFrameworkCore.Infrastructure.Internal.MySQLOptionsExtension.ApplyServices(IServiceColle>ction services) en Microsoft.EntityFrameworkCore.Internal.ServiceProviderCache.ApplyServiceOptions(IDb >opciones, servicios de ServiceCollection) en Microsoft.EntityFrameworkCore.Internal.ServiceProviderCache.<c__DisplayClass4_0.g__BuildServiceProvider|3() en Microsoft.EntityFrameworkCore.Internal.ServiceProviderCache.<>c__DisplayClass4_0.b__2(Int64 k) en System.Collections.Concurrent.ConcurrentDictionary 2.GetOrAdd(TKey key, Func 2 valueFactory) en Microsoft.EntityFrameworkCore.Internal.ServiceProviderCache.GetOrAdd(IDbContextOptions options, >Boolean providerRequired) en Microsoft.EntityFrameworkCore.DbContext.get_InternalServiceProvider() en Microsoft.EntityFrameworkCore.DbContext.get_DbContextDependencies() en Microsoft .EntityFrameworkCore.DbC ontext.EntryWithoutDetectChanges[TEntity](entidad TEntity) en Microsoft.EntityFrameworkCore.DbContext.SetEntityState[TEntity](entidad TEntity, EntityState >entityState) en Microsoft.EntityFrameworkCore.DbContext.Add[TEntity](entidad TEntity) en contatinApi.Data.SeedData .SeedUsers() en D:\dev\contatinapi\Data\SeedData.cs:línea 24 en System.Threading.Tasks.Task.<>c.b__139_1(Object state) en System.Threading.QueueUserWorkItemCallback.<>c.< .cctor>b__6_0(QueueUserWorkItemCallback quwi) en System.Threading.ExecutionContext.RunForThreadPoolUnsafe[TState](ExecutionContext >executionContext, Action`1 callback, TState& state) en System.Threading.QueueUserWorkItemCallback.Execute() en System.Threading.ThreadPoolWorkQueue.Dispatch () en System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()

La clase de usuario:

 public class User { public int Id{get;set;} public string LoginEmail{get;set;} public string UserName{get;set;} public DateTime CreatedAt{get;set;} public List<Contact> Contacts {get;set;} public List<ContactList> ContactLists{get;set;} }

Se actualizan los paquetes EF Core y MySQL. Además, probé usando procedimientos almacenados y dio los mismos resultados.

El contenido de Ex era:

El valor de Ex era {System.TypeLoadException: Método 'Crear' en el tipo 'MySql.Data.EntityFrameworkCore.Query.Internal.MySQLSqlTranslatingExpressionVisitorFactory' del ensamblado 'MySql.Data.EntityFrameworkCore, Version=8.0.22.0, Culture=neutral, PublicKeyToken= c5687fc88969c44d' no tiene implementación. en MySql.Data.EntityFrameworkCore.Extensions.MySQLServiceCollectionExtensions.AddEntityFrameworkMySQL(IServiceCollection services) en MySql.Data.EntityFrameworkCore.Infrastructure.Internal.MySQLOptionsExtension.ApplyServices(IServiceCollection services) en Microsoft.EntityFrameworkCore.Internal.ServiceProviderCache.ApplyServiceOptions(IDbContextOptions) ) en Microsoft.EntityFrameworkCore.Internal.ServiceProviderCache.<>c__DisplayClass4_0.g__BuildServiceProvider|3() en Microsoft.EntityFrameworkCore.Internal.ServiceProviderCache.<>c__DisplayClass4_0.b__2(Int64 k) en System.Collections.Concurrent.ConcurrentDictionary 2.GetOrAdd(TKey key, Func 2 valueFactory) en Microsoft.EntityFrameworkCore.Internal.ServiceProviderCache.GetOrAdd(IDbContextOptions options, Boolean providerRequired) en Microsoft.EntityFrameworkCore.DbContext.get_InternalServiceProvider() en Microsoft.EntityFrameworkCore.DbContext.get_DbContextDependencies() en Microsoft.EntityFrameworkCore.DbCont ext.Microsoft.EntityFrameworkCore.Internal.IDbContextDependencies.get_StateManager() en Microsoft.EntityFrameworkCore.Internal.InternalDbSet 1.EntryWithoutDetectChanges(TEntity entity) at Microsoft.EntityFrameworkCore.Internal.InternalDbSet 1.Add(entidad de TEntity) en contatinApi.Data.SeedData. SeedUsers() en D:\dev\ContatinApi\Data\SeedData.cs:line 40}

over 4 years ago · Santiago Trujillo
5 answers
Answer question

0

Tratar:

 _context.Users.Add(new User{LoginEmail=email, CreatedAt=DateTime.Now }); await _context.SaveChangesAsync(); or better try { var newUser= new User{LoginEmail=email, CreatedAt=DateTime.Now }; _context.Users.Add(newUser); await _context.SaveChangesAsync(); } catch (Exception ex) { var errorMessage = ex.Message; } in this case you can get a new key if you need;

ACTUALIZAR:

 instead of _context.Users.Add(newUser); Try: _context.Entry(newUser).State = EntityState.Added;

Pero, ¿por qué su ID de su clase de Usuario no tiene el atributo [Clave] y CreateDate no tiene el atributo [Columna (TypeName = "datetime")]? ¿Qué tipo de validaciones tiene? ¿Puede publicar algo de _context que sea relevante para el usuario?

over 4 years ago · Santiago Trujillo Report

0

Si está utilizando Microsoft.EntityFrameworkCore 5.0, descárguelo a Microsoft.EntityFrameworkCore 3.1.10 MySQL EF 8.0.22 actualmente no es compatible con Microsoft.EntityFrameworkCore 5.0

Tengo un código que funciona hasta que actualicé a Microsoft.EntityFrameworkCore 5.0, luego recibí el mismo error, ¡bajé de categoría y funcionó!

Con la esperanza de publicar un informe de errores en MySQL Bug Forum

over 4 years ago · Santiago Trujillo Report

0

Mientras seguía un tutorial de EF Core para MySql usando Migraciones y obtenía el error "El método 'Crear' no tiene una implementación" y buscaba mucho en Google, bajé mi archivo csproj de net5.0 a netcoreapp3.1:

 <TargetFramework>netcoreapp3.1</TargetFramework>

E incluyó los siguientes paquetes de Nuget usando comandos de terminal dotnet dentro del directorio del proyecto:

 dotnet add package Pomelo.EntityFrameworkCore.MySql --version 5.0.0-alpha.2 ... dotnet list package Project 'XYZ' has the following package references [netcoreapp3.1]: Top-level Package Requested Resolved > Microsoft.EntityFrameworkCore 5.0.1 5.0.1 > Microsoft.EntityFrameworkCore.Design 5.0.1 5.0.1 > Microsoft.EntityFrameworkCore.Tools 5.0.1 5.0.1 > Pomelo.EntityFrameworkCore.MySql 5.0.0-alpha.2 5.0.0-alpha.2

Como ejemplo, uno de los archivos del modelo es Student.cs:

 namespace EFCoreTutorial.Model { public class Student { public int StudentId { get; set; } public string Name { get; set; } } }

Creé el archivo de contexto db SchoolContext.cs con mi cadena de conexión personal como:

 using Microsoft.EntityFrameworkCore; using Pomelo.EntityFrameworkCore.MySql.Infrastructure; namespace EFCoreTutorial.Data { public class SchoolContext : DbContext { public DbSet<Model.Student> Students { get; set; } public DbSet<Model.Course> Courses { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { string connectionString = "server=localhost;port=3306;database=SchoolDB;user=root;password=******"; optionsBuilder.UseMySql(connectionString, new MySqlServerVersion(new System.Version(8, 0, 22)), mySqlOptions => mySqlOptions.CharSetBehavior(CharSetBehavior.NeverAppend)); } } }

luego puede crear la base de datos y las tablas vacías definidas en el Modelo con

 dotnet ef migrations add CreateSchoolDB <- just a label dotnet ef migrations list <- to verify it is pending dotnet ef database update <- the database will be created/updated dotnet ef migrations list <- to verify

finalmente verifique en mysql:

 mysql> show databases; mysql> use SchoolDB; mysql> show tables;

¡Éxito! La base de datos y las tablas se crearon completamente a partir de los modelos y la definición del contexto de la base de datos.

over 4 years ago · Santiago Trujillo Report

0

He resuelto este problema siguiendo esto: -

  1. actualizar Microsoft.EntityFrameworkCore a la versión 5.0.1

  2. actualice Pomelo.EntityFrameworkCore.MySql a la versión 5.0.0-alpha.2

  3. agregue los bloques de código en el método ConfigureServices del archivo Startup.cs

    var connectionString = _configuration.GetConnectionString("userDB"); services.AddDbContext(opciones =>
    options.UseMySql(connectionString,new MySqlServerVersion(nueva versión(10, 1, 40)), mySqlOptions => mySqlOptions .CharSetBehavior(CharSetBehavior.NeverAppend)));

Para obtener la versión del servidor mysql, ejecute la consulta en cualquiera de los editores del servidor mysql como MySql Workbench o HeidiSQL

 SELECT VERSION()
over 4 years ago · Santiago Trujillo Report

0

Instale el siguiente paquete nuget para el controlador MySql desde Pomelo.EntityFrameworkCore.MySql

Otros paquetes de Nuget serán:

 <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="5.0.10" /> <PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.10" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="5.0.10"> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <PrivateAssets>all</PrivateAssets> </PackageReference> <PackageReference Include="MySql.Data.EntityFrameworkCore" Version="8.0.22" /> <PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="5.0.1" />

Ejecute el siguiente comando para obtener la versión de su MySql

 SELECT VERSION()

En Startup.cs agregue los siguientes espacios de nombres:

 using System; using IdentityWithEFPlayground.Models; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Identity; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Pomelo.EntityFrameworkCore.MySql;

En el método ConfigureServices de Startup.cs, agregue el siguiente código:

 var serverVersion = new MySqlServerVersion(new Version(8, 0, 26)); // Get the value from SELECT VERSION() string connectionString = Configuration.GetConnectionString("DefaultConnection"); services.AddDbContext<AppDBContext>(c => c.UseMySql(connectionString, serverVersion)); services.AddIdentity<IdentityUser, IdentityRole>().AddEntityFrameworkStores<AppDBContext>();

En la Terminal, ejecute el siguiente comando para actualizar/crear la base de datos a través de Migraciones de EF:

 dotnet ef migrations add IdentityUser dotnet ef database update

Verá las tablas de identidad de ASP.NET en su base de datos:

ingrese la descripción de la imagen aquí

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!