Ped*_*mos 14 c# mysql entity-framework-core asp.net-core
我正在尝试使用以下代码向数据库添加一个新用户:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
但它不断给我以下错误:
System.TypeLoadException: 来自 >assembly 'MySql.Data.EntityFrameworkCore, Version=8.0.22.0, Culture=neutral, >PublicKeyToken=c5687fc88969c44d' 的类型 'MySql.Data.EntityFrameworkCore.Query.Internal.MySQLSqlTranslatingExpressionVisitorFactory' 中的方法 'Create'有一个实现。在 MySql.Data.EntityFrameworkCore.Extensions.MySQLServiceCollectionExtensions.AddEntityFrameworkMySQL(IServ>iceCollection services) 在 MySql.Data.EntityFrameworkCore.Infrastructure.Internal.MySQLOptionsExtension.ApplyServices(IServiceColle>ction services) 在 Microsoft.EntityFrameworkCore.Internal.ServiceProviderCache.ApplyOptionServices(ID) >options, ServiceCollection 服务)在 Microsoft.EntityFrameworkCore.Internal.ServiceProviderCache.<c__DisplayClass4_0.g__BuildServiceProvider|3() 在 Microsoft。
2.GetOrAdd(TKey key, Func2 valueFactory) at Microsoft.EntityFrameworkCore.Internal.ServiceProviderCache.GetOrAdd(IDbContextOptions options, >Boolean providerRequired) at Microsoft.EntityFrameworkCore.DbContext.get_InternalServiceProvider() at Microsoft.EntityFrameworkCore.DbContext.get_DbContextDependencies() at Microsoft.EntityFrameworkCore.DbContextChanges[EntryWithout] TEntity](TEntity entity) at Microsoft.EntityFrameworkCore.DbContext.SetEntityState[TEntity](TEntity entity, EntityState >entityState) at Microsoft.EntityFrameworkCore.DbContext.Add[TEntity](TEntity entity) at contatinApi.Data.SeedData.SeedUsers()在 D:\dev\contatinapi\Data\SeedData.cs:line 24 at System.Threading.Tasks.Task.<>c.b__139_1(Object state) at System.Threading.QueueUserWorkItemCallback.<>c.<.cctor>b__6_0 (QueueUserWorkItemCallback quwi) 在 System.Threading。ExecutionContext.RunForThreadPoolUnsafe[TState](ExecutionContext >executionContext, Action`1 callback, TState& state) at System.Threading.QueueUserWorkItemCallback.Execute() at System.Threading.ThreadPoolWorkQueue.Dispatch() at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()
用户类:
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;}
}
Run Code Online (Sandbox Code Playgroud)
EF Core 和 MySQL 包均已更新。此外,我尝试使用存储过程,它给出了相同的结果。
Ex的内容是:
Ex 的值为 {System.TypeLoadException: Method 'Create' in type 'MySql.Data.EntityFrameworkCore.Query.Internal.MySQLSqlTranslatingExpressionVisitorFactory' 来自程序集 'MySql.Data.EntityFrameworkCore, Version=8.0.22.0, Culture=neutral, PublicKeyToken= c5687fc88969c44d' 没有实现。在 MySql.Data.EntityFrameworkCore.Extensions.MySQLServiceCollectionExtensions.AddEntityFrameworkMySQL(IServiceCollection services) 在 MySql.Data.EntityFrameworkCore.Infrastructure.Internal.MySQLOptionsExtension.ApplyServices(IServiceCollection services) 在 Microsoft.EntityFrameworkCore.Internal.ServiceProviderCache.ApplyServices(IDbContextOptions services) ) 在 Microsoft.EntityFrameworkCore.Internal.ServiceProviderCache.<>c__DisplayClass4_0.g__BuildServiceProvider|3() 在 Microsoft。
2.GetOrAdd(TKey key, Func2 valueFactory) at Microsoft.EntityFrameworkCore.Internal.ServiceProviderCache.GetOrAdd(IDbContextOptions options, Boolean providerRequired) at Microsoft.EntityFrameworkCore.DbContext.get_InternalServiceProvider() at Microsoft.EntityFrameworkCore.DbContext.get_DbContextDependencies() at Microsoft.EntityFrameworkCore.DbContextDependencies() at Microsoft.EntityFrameworkCore.DbContextDependencies() .Internal.IDbContextDependencies.get_StateManager() at Microsoft.EntityFrameworkCore.Internal.InternalDbSet1.EntryWithoutDetectChanges(TEntity entity) at Microsoft.EntityFrameworkCore.Internal.InternalDbSet1.Add(TEntity entity) at contatinApi.Data.SeedData.SeedUsers() in D:\dev\ContatinApi\Data\SeedData.cs:line 40}
小智 16
如果您使用的是 Microsoft.EntityFrameworkCore 5.0,请将其降级到 Microsoft.EntityFrameworkCore 3.1.10 MySQL EF 8.0.22 目前与 Microsoft.EntityFrameworkCore 5.0 不兼容
我有一个工作代码,直到我升级到 Microsoft.EntityFrameworkCore 5.0 然后我得到了同样的错误,降级并且它工作了!
希望在 MySQL Bug 论坛上发布 Bug 报告
尝试:
_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;
Run Code Online (Sandbox Code Playgroud)
更新:
instead of _context.Users.Add(newUser);
Try:
_context.Entry(newUser).State = EntityState.Added;
Run Code Online (Sandbox Code Playgroud)
但是为什么你的 User 类的 ID 没有属性 [Key] 并且 CreateDate 没有属性 [Column(TypeName = "datetime")] ?您有哪些类型的验证?您可以发布一些与用户相关的 _context 吗?
| 归档时间: |
|
| 查看次数: |
8956 次 |
| 最近记录: |