Current ASP.NET Core template is ASP.NET Core 1.1 <span style="color:#FF0000">NOT</span> Include module zero.
NuGet Package Install MySql.Data.EntityFrameworkCore [attachment=2:16v61bom]2017-05-03_15-35-37.png[/attachment:16v61bom] (I remove two package about mssql, too.)
Edit MyProject.EntityFrameworkCore.DbContextOptionsConfigurer.cs [attachment=1:16v61bom]2017-05-03_15-36-29.png[/attachment:16v61bom]
dbContextOptions.UseMySQL(connectionString);
Edit appsettings.json [attachment=0:16v61bom]2017-05-03_15-37-53.png[/attachment:16v61bom]
"Default": "Server=localhost; Database=GameDb; userid=root;pwd=;port=3306;sslmode=none;"
Then you can Add-Migration, Update-Database, use Repositories...ETC.
BTW, I got an error if use the project Include module zero.
A discriminator property cannot be set for the entity type 'EditionFeatureSetting' because it is not the root of an inheritance hierarchy.
2 Answer(s)
-
0
Hi,
Thank you for your sharing :).
About the exception with module zero, official EFCore library provided by Oracle cannot doesn't automatically do registrations for derived classes.
You can either use <a class="postlink" href="https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql">https://github.com/PomeloFoundation/Pom ... Core.MySql</a> or you need to define Discriminator column like this
modelBuilder.Entity<FeatureSetting>(b => { b.HasDiscriminator<string>("Discriminator") .HasValue<FeatureSetting>(nameof(FeatureSetting)) .HasValue<EditionFeatureSetting>(nameof(EditionFeatureSetting)) .HasValue<TenantFeatureSetting>(nameof(TenantFeatureSetting)); });
modelBuilder.Entity<PermissionSetting>(b => { b.HasDiscriminator<string>("Discriminator") .HasValue<PermissionSetting>(nameof(PermissionSetting)) .HasValue<RolePermissionSetting>(nameof(RolePermissionSetting)) .HasValue<UserPermissionSetting>(nameof(UserPermissionSetting)); });
Thanks.
-
0
I override OnModelCreating, then I got an error when Add-Migration.
Error message is below
"Unable to determine the relationship represented by navigation property 'User.DeleterUser' of type 'User'. Either manually configure the relationship, or ignore this property from the model."
P.S. I Include module zero (the current version)
<span style="color:#FF0000">But</span>
Pomelo.EntityFrameworkCore.MySql is work fine.
after abpusertokens table created, then throw exception below.
MySql.Data.MySqlClient.MySqlException: Specified key was too long; max key length is 767 bytes at MySql.Data.MySqlClient.MySqlDataReader.ActivateResultSet(ResultSet resultSet) at MySql.Data.MySqlClient.MySqlDataReader.<ReadFirstResultSetAsync>d__62.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at MySql.Data.MySqlClient.MySqlDataReader.<CreateAsync>d__61.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at MySql.Data.MySqlClient.CommandExecutors.TextCommandExecutor.<ExecuteReaderAsync>d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at MySql.Data.MySqlClient.CommandExecutors.TextCommandExecutor.<ExecuteNonQueryAsync>d__1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery() at Microsoft.EntityFrameworkCore.Storage.Internal.MySqlRelationalCommand.<ExecuteAsync>d__3.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.EntityFrameworkCore.Storage.Internal.MySqlRelationalCommand.Execute(IRelationalConnection connection, String executeMethod, IReadOnlyDictionary`2 parameterValues, Boolean closeConnection) at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.ExecuteNonQuery(IRelationalConnection connection, IReadOnlyDictionary`2 parameterValues) at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationCommandExecutor.ExecuteNonQuery(IEnumerable`1 migrationCommands, IRelationalConnection connection) at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration) at Abp.Zero.EntityFrameworkCore.AbpZeroDbMigrator`1.CreateOrMigrate(AbpTenantBase tenant, Action`1 seedAction) at MyGZ.Migrator.MultiTenantMigrateExecuter.Run(Boolean skipConnVerification) in E:\Users\jakeuj\Desktop\MyGZ\src\MyGZ.Migrator\MultiTenantMigrateExecuter.cs:line 63
I think mysql not support Length: 2000 Value = table.Column
migrationBuilder.CreateTable( name: "AbpSettings", columns: table => new { Id = table.Column<long>(nullable: false) .Annotation("MySql:ValueGeneratedOnAdd", true), CreationTime = table.Column<DateTime>(nullable: false), CreatorUserId = table.Column<long>(nullable: true), LastModificationTime = table.Column<DateTime>(nullable: true), LastModifierUserId = table.Column<long>(nullable: true), Name = table.Column<string>(maxLength: 256, nullable: false), TenantId = table.Column<int>(nullable: true), UserId = table.Column<long>(nullable: true), Value = table.Column<string>(maxLength: 2000, nullable: true) }, constraints: table => { table.PrimaryKey("PK_AbpSettings", x => x.Id); table.ForeignKey( name: "FK_AbpSettings_AbpUsers_UserId", column: x => x.UserId, principalTable: "AbpUsers", principalColumn: "Id", onDelete: ReferentialAction.Restrict); });