Last active
April 18, 2017 08:35
-
-
Save rqx110/d1911eb6ef59d8d5a5c9ca27b5a870ad to your computer and use it in GitHub Desktop.
another using MySql in Abp
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System.Data.Common; | |
using System.Data.Entity; | |
using Abp.Zero.EntityFramework; | |
using Microsoft.Extensions.Configuration; | |
using AlanFlaherty.AdminPanelCore.Authorization.Roles; | |
using AlanFlaherty.AdminPanelCore.Configuration; | |
using AlanFlaherty.AdminPanelCore.MultiTenancy; | |
using AlanFlaherty.AdminPanelCore.Users; | |
using AlanFlaherty.AdminPanelCore.Web; | |
using MySql.Data.MySqlClient; | |
using MySql.Data.Entity; | |
using System.Data.Entity.Migrations.Sql; | |
using System.Data.Entity.Migrations.Model; | |
using System.Collections.Generic; | |
namespace AlanFlaherty.AdminPanelCore.EntityFramework | |
{ | |
[DbConfigurationType(typeof(AdminPanelCoreDbConfiguration))] | |
// [DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))] | |
public class AdminPanelCoreDbContext : AbpZeroDbContext<Tenant, Role, User> | |
{ | |
/* Define an IDbSet for each entity of the application */ | |
/* Default constructor is needed for EF command line tool. */ | |
public AdminPanelCoreDbContext() | |
//: base(new MySqlConnection(GetConnectionString()), true) | |
: base(GetConnectionString()) | |
{ | |
} | |
private static string GetConnectionString() | |
{ | |
var configuration = AppConfigurations.Get( | |
WebContentDirectoryFinder.CalculateContentRootFolder() | |
); | |
return configuration.GetConnectionString( | |
AdminPanelCoreConsts.ConnectionStringName | |
); | |
} | |
/* This constructor is used by ABP to pass connection string. | |
* Notice that, actually you will not directly create an instance of AdminPanelCoreDbContext since ABP automatically handles it. | |
*/ | |
public AdminPanelCoreDbContext(string nameOrConnectionString) | |
: base(nameOrConnectionString) | |
{ | |
} | |
/* This constructor is used in tests to pass a fake/mock connection. */ | |
public AdminPanelCoreDbContext(DbConnection dbConnection) | |
: base(dbConnection, true) | |
{ | |
} | |
} | |
public class AdminPanelCoreDbConfiguration : MySql.Data.Entity.MySqlEFConfiguration | |
{ | |
public AdminPanelCoreDbConfiguration() | |
{ | |
SetMigrationSqlGenerator("MySql.Data.MySqlClient", () => new AdminPanelCoreMySqlMigrationSqlGenerator()); | |
SetHistoryContext( | |
"MySql.Data.MySqlClient", (conn, schema) => new AdminPanelCoreMySqlHistoryContext(conn, schema)); | |
// new MySqlEFConfiguration | |
// SetProviderServices("MySql.Data.MySqlClient", MySql.Data.MySqlClientMySqlProviderServices.Instance); | |
// "MySql.Data.MySqlClient", | |
// "MySql.Data.MySqlClient.MySqlProviderServices. | |
// System.Data.Entity.SqlServer.SqlProviderServices.Instance | |
//); | |
// | |
// MySQL.Data.Entity.Extensions.MySQLDbContextOptionsExtensions.UseMySQL() | |
// SetConfiguration(new MySqlEFConfiguration()); | |
//SapientGuardian.MySql.Data.EntityFrameworkCore.Query.ExpressionTranslators. | |
} | |
// /* | |
// * | |
// <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" /> | |
// */ | |
//} | |
} | |
public class AdminPanelCoreMySqlMigrationSqlGenerator : MySqlMigrationSqlGenerator | |
{ | |
protected override MigrationStatement Generate(AddForeignKeyOperation addForeignKeyOperation) | |
{ | |
addForeignKeyOperation.PrincipalTable = addForeignKeyOperation.PrincipalTable.Replace("dbo.", ""); | |
addForeignKeyOperation.DependentTable = addForeignKeyOperation.DependentTable.Replace("dbo.", ""); | |
MigrationStatement ms = base.Generate(addForeignKeyOperation); | |
return ms; | |
} | |
// log all operations to check for dbo | |
protected override MigrationStatement Generate(AddColumnOperation op) | |
{ | |
System.Console.WriteLine($"Generate:AddColumnOperation Table name {op.Table}"); | |
return base.Generate(op); | |
} | |
protected override MigrationStatement Generate(CreateTableOperation op) | |
{ | |
System.Console.WriteLine($"Generate:CreateTableOperation Table name {op.Name}"); | |
return base.Generate(op); | |
} | |
protected override MigrationStatement Generate(DropTableOperation op) | |
{ | |
System.Console.WriteLine($"Generate:DropTableOperation Table name {op.Name}"); | |
//op.Name = op.Name.Replace("dbo.", string.Empty); | |
//DropTableOperation op1 = new DropTableOperation | |
// ( | |
// op.Name.Replace("dbo.", string.Empty), | |
// op.RemovedAnnotations, | |
// op.Inverse, | |
// ) | |
return base.Generate(op); | |
} | |
protected override MigrationStatement Generate(MoveTableOperation op) | |
{ | |
System.Console.WriteLine($"Generate:MoveTableOperation Table name {op.Name}"); | |
return base.Generate(op); | |
} | |
protected override MigrationStatement Generate(RenameTableOperation op) | |
{ | |
System.Console.WriteLine($"Generate:RenameTableOperation Table name {op.Name}"); | |
return base.Generate(op); | |
} | |
protected override MigrationStatement Generate(DropIndexOperation op) | |
{ | |
System.Console.WriteLine($"Generate:DropIndexOperation Index name {op.Name}, Table Name {op.Table}"); | |
return base.Generate(op); | |
} | |
protected override MigrationStatement Generate(CreateIndexOperation op) | |
{ | |
System.Console.WriteLine($"Generate:CreateIndexOperation Index name {op.Name}, Columns: {string.Join(",", op.Columns)}, Table: {op.Table}"); | |
return base.Generate(op); | |
} | |
protected override MigrationStatement Generate(SqlOperation op) | |
{ | |
System.Console.WriteLine($"Generate:SqlOperation Sql: {op.Sql}"); | |
return base.Generate(op); | |
} | |
public override IEnumerable<MigrationStatement> Generate(IEnumerable<MigrationOperation> migrationOperations, string providerManifestToken) | |
{ | |
System.Console.WriteLine($"Generate:IEnumerable<MigrationOperation>"); | |
// migrationOperations | |
foreach (MigrationOperation operation in migrationOperations) | |
{ | |
System.Console.WriteLine($"\t MigrationOperation: {operation}"); | |
} | |
IEnumerable<MigrationStatement> res = base.Generate(migrationOperations, providerManifestToken); | |
foreach (MigrationStatement ms in res) | |
{ | |
ms.Sql = ms.Sql.Replace("dbo.", ""); | |
} | |
return res; | |
//return base.Generate(migrationOperations, providerManifestToken); | |
} | |
} | |
public class AdminPanelCoreMySqlHistoryContext : MySqlHistoryContext | |
{ | |
public AdminPanelCoreMySqlHistoryContext(DbConnection existingConnection, string defaultSchema) : base(existingConnection, defaultSchema) | |
{ | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
refrence: https://github.com/AlanFlaherty/AdminPanelCore.MySql