From 9302b0c661c0d8a9575303e4c5b287b75e053165 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 28 Feb 2020 15:10:57 +0300 Subject: [PATCH] Added sections under the Using Multiple Databases --- docs/en/Entity-Framework-Core-Migrations.md | 137 ++++++- docs/en/_resources/Diagrams.docx | Bin 24068 -> 34997 bytes docs/en/images/bookstore-second-database.png | Bin 0 -> 21469 bytes docs/en/images/multiple-database-usage.png | Bin 0 -> 62975 bytes ...-add-migration-initial-update-database.png | Bin 0 -> 34868 bytes .../EfCoreMigrationDemo/Acme.BookStore.sln | 7 + .../appsettings.json | 5 +- ...ameworkCore.DbMigrationsForSecondDb.csproj | 18 + ...tyFrameworkCoreSecondDbMigrationsModule.cs | 17 + .../BookStoreSecondMigrationsDbContext.cs | 28 ++ ...okStoreSecondMigrationsDbContextFactory.cs | 32 ++ ...workCoreBookStoreSecondDbSchemaMigrator.cs | 34 ++ .../20200228120435_Initial.Designer.cs | 362 ++++++++++++++++++ .../Migrations/20200228120435_Initial.cs | 212 ++++++++++ ...eSecondMigrationsDbContextModelSnapshot.cs | 360 +++++++++++++++++ .../Acme.BookStore.Web.csproj | 1 + .../src/Acme.BookStore.Web/appsettings.json | 9 +- 17 files changed, 1217 insertions(+), 5 deletions(-) create mode 100644 docs/en/images/bookstore-second-database.png create mode 100644 docs/en/images/multiple-database-usage.png create mode 100644 docs/en/images/pmc-add-migration-initial-update-database.png create mode 100644 samples/EfCoreMigrationDemo/src/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb.csproj create mode 100644 samples/EfCoreMigrationDemo/src/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb/EntityFrameworkCore/BookStoreEntityFrameworkCoreSecondDbMigrationsModule.cs create mode 100644 samples/EfCoreMigrationDemo/src/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb/EntityFrameworkCore/BookStoreSecondMigrationsDbContext.cs create mode 100644 samples/EfCoreMigrationDemo/src/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb/EntityFrameworkCore/BookStoreSecondMigrationsDbContextFactory.cs create mode 100644 samples/EfCoreMigrationDemo/src/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb/EntityFrameworkCore/EntityFrameworkCoreBookStoreSecondDbSchemaMigrator.cs create mode 100644 samples/EfCoreMigrationDemo/src/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb/Migrations/20200228120435_Initial.Designer.cs create mode 100644 samples/EfCoreMigrationDemo/src/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb/Migrations/20200228120435_Initial.cs create mode 100644 samples/EfCoreMigrationDemo/src/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb/Migrations/BookStoreSecondMigrationsDbContextModelSnapshot.cs diff --git a/docs/en/Entity-Framework-Core-Migrations.md b/docs/en/Entity-Framework-Core-Migrations.md index d3dd077411..49f347254e 100644 --- a/docs/en/Entity-Framework-Core-Migrations.md +++ b/docs/en/Entity-Framework-Core-Migrations.md @@ -453,7 +453,7 @@ builder.Entity(b => In this way, we re-used the extension method that is used to configure custom property mappings for the role. But, this time, did the same customization for the `IdentityRole` entity. -Now, you can add a new EF Core database migration using the standard `Add-Migration` command in the Package Manager Console (remember to select `.EntityFrameworkCore.DbMigrations` as the Default Project in the PMC): +Now, you can add a new EF Core database migration using the standard `Add-Migration` command in the Package Manager Console (remember to select `.EntityFrameworkCore.DbMigrations` as the Default Project in the PMC and make sure that the `.Web` project is still the startup project): ![pmc-add-migration-role-title](images/pmc-add-migration-role-title.png) @@ -588,4 +588,139 @@ An alternative approach would be to allow each module to have its own migrations ## Using Multiple Databases +The default startup template is organized to use a single database used by all the modules and by your application. However, the ABP Framework and all the pre-built modules are designed so that they can use multiple databases. Each module can use its own database or you can group modules into a few databases. + +This section will explain how to move Audit Logging, Setting Management and Permission Management module tables to a second database while the remaining modules continue to use the main ("Default") database. + +The resulting structure will be like the figure below: + +![single-database-usage](images/multiple-database-usage.png) + +### Change the Connection Strings Section + +First step is to change the connection string section inside all the `appsettings.json` files. Initially, it is like that: + +````json +"ConnectionStrings": { + "Default": "Server=localhost;Database=BookStore;Trusted_Connection=True;MultipleActiveResultSets=true" +} +```` + +Change it as shown below: + +````json +"ConnectionStrings": { + "Default": "Server=localhost;Database=BookStore;Trusted_Connection=True;MultipleActiveResultSets=true", + "AbpPermissionManagement": "Server=localhost;Database=BookStore_SecondDb;Trusted_Connection=True;MultipleActiveResultSets=true", + "AbpSettingManagement": "Server=localhost;Database=BookStore_SecondDb;Trusted_Connection=True;MultipleActiveResultSets=true", + "AbpAuditLogging": "Server=localhost;Database=BookStore_SecondDb;Trusted_Connection=True;MultipleActiveResultSets=true" +} +```` + +Added 3 more connection strings for the related module to target the `BookStore_SecondDb` database. `AbpPermissionManagement` is the connection string for the permission management module. + +The `AbpPermissionManagement` is a constant [defined](https://github.com/abpframework/abp/blob/97eaa6ff5a044f503465455c86332e5a277b077a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/AbpPermissionManagementDbProperties.cs#L11) by the permission management module. ABP Framework [connection string selection system](Connection-Strings.md) selects this connection string for the permission management module if you define. If you don't define, it fallbacks to the `Default` connection string. + +### Create a Second Migration Project + +Defining the connection strings as explained above is enough on runtime. However, `BookStore_SecondDb` database doesn't exist yet. You need to create the database and the tables for the related modules. + +Just like the main database, we want to use the EF Core Code First migration system to create and maintain the second database. + +The easiest way to create a second project (`.csproj`) for the second migration `DbContext`. Create a new **class library project** in your solution named `Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb` (or name it better if you didn't like it). + +`.csproj` content should be something like that: + +````xml + + + + + + netcoreapp3.1 + Acme.BookStore.DbMigrationsForSecondDb + + + + + + + + + + + +```` + +You can just copy & modify the content of the original `.DbMigrations` project. This project references to the `.EntityFrameworkCore` project. Only difference is the `RootNamespace` value. + +**Add a reference** to this project from the `.Web` project (otherwise, EF Core tooling doesn't allow to use the `Add-Migration` command). + +### Create the Second DbMigrationDbContext + +Create a new DbContext for the migrations and call the extension methods to configure database tables for the related modules: + +````csharp +public class BookStoreSecondMigrationsDbContext : AbpDbContext +{ + public BookStoreSecondMigrationsDbContext( + DbContextOptions options) + : base(options) + { + } + + protected override void OnModelCreating(ModelBuilder builder) + { + base.OnModelCreating(builder); + + /* Include modules to your migration db context */ + + builder.ConfigurePermissionManagement(); + builder.ConfigureSettingManagement(); + builder.ConfigureAuditLogging(); + } +} +```` + +Create a Design Time Db Factory class, that is used by the EF Core tooling (by `Add-Migration` and `Update-Database` PCM commands for example): + +````csharp +/* This class is needed for EF Core console commands + * (like Add-Migration and Update-Database commands) */ +public class BookStoreSecondMigrationsDbContextFactory + : IDesignTimeDbContextFactory +{ + public BookStoreSecondMigrationsDbContext CreateDbContext(string[] args) + { + var configuration = BuildConfiguration(); + + var builder = new DbContextOptionsBuilder() + .UseSqlServer(configuration.GetConnectionString("AbpPermissionManagement")); + + return new BookStoreSecondMigrationsDbContext(builder.Options); + } + + private static IConfigurationRoot BuildConfiguration() + { + var builder = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json", optional: false); + + return builder.Build(); + } +} +```` + +This is similar to the class inside the `.EntityFrameworCore.DbMigrations` project, except this one uses the `AbpPermissionManagement` connection string. + +Now, you can open the Package Manager Console, select the `.EntityFrameworkCore.DbMigrationsForSecondDb` project as the default project (make sure the `.Web` project is still the startup project) and run the `Add-Migration` and `Update-Database` commands as shown below: + +![pmc-add-migration-initial-update-database](images/pmc-add-migration-initial-update-database.png) + +Now, you should have a new database contains only the tables needed by the related modules: + +![bookstore-second-database](images/bookstore-second-database.png) + +### Remove Modules from the Main Database + TODO \ No newline at end of file diff --git a/docs/en/_resources/Diagrams.docx b/docs/en/_resources/Diagrams.docx index 792d473e3f429de73d727405562bba354d7a3e69..424e281470775a3079c9456b44c1f94683c64167 100644 GIT binary patch delta 25940 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 delta 14952 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 literal 0 HcmV?d00001 diff --git a/docs/en/images/multiple-database-usage.png b/docs/en/images/multiple-database-usage.png new file mode 100644 index 0000000000000000000000000000000000000000..ada61776299619546456f85762a29fa0436b870a GIT binary patch literal 62975 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

IEgGZ#qaM%`jVS+cZeN35%y(EN^W{jbCqD) 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 Vn?Cv<(qQP;sVZtIl**e1{~r)Y$hiOj literal 0 HcmV?d00001 diff --git a/docs/en/images/pmc-add-migration-initial-update-database.png b/docs/en/images/pmc-add-migration-initial-update-database.png new file mode 100644 index 0000000000000000000000000000000000000000..3cc45e5ddfb66ed9373981d4cecd4bc207cd7a36 GIT binary patch literal 34868 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 literal 0 HcmV?d00001 diff --git a/samples/EfCoreMigrationDemo/Acme.BookStore.sln b/samples/EfCoreMigrationDemo/Acme.BookStore.sln index 5750b0dbef..304731c2df 100644 --- a/samples/EfCoreMigrationDemo/Acme.BookStore.sln +++ b/samples/EfCoreMigrationDemo/Acme.BookStore.sln @@ -39,6 +39,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Acme.BookStore.HttpApi.Clie EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Acme.BookStore.DbMigrator", "src\Acme.BookStore.DbMigrator\Acme.BookStore.DbMigrator.csproj", "{AA94D832-1CCC-4715-95A9-A483F23A1A5D}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb", "src\Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb\Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb.csproj", "{9F050D17-3D9E-4A0F-B8F9-D90460ABDC76}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -109,6 +111,10 @@ Global {AA94D832-1CCC-4715-95A9-A483F23A1A5D}.Debug|Any CPU.Build.0 = Debug|Any CPU {AA94D832-1CCC-4715-95A9-A483F23A1A5D}.Release|Any CPU.ActiveCfg = Release|Any CPU {AA94D832-1CCC-4715-95A9-A483F23A1A5D}.Release|Any CPU.Build.0 = Release|Any CPU + {9F050D17-3D9E-4A0F-B8F9-D90460ABDC76}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9F050D17-3D9E-4A0F-B8F9-D90460ABDC76}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9F050D17-3D9E-4A0F-B8F9-D90460ABDC76}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9F050D17-3D9E-4A0F-B8F9-D90460ABDC76}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -130,6 +136,7 @@ Global {E512F4D9-9375-480F-A2F6-A46509F9D824} = {04DBDB01-70F4-4E06-B468-8F87850B22BE} {EF480016-9127-4916-8735-D2466BDBC582} = {04DBDB01-70F4-4E06-B468-8F87850B22BE} {AA94D832-1CCC-4715-95A9-A483F23A1A5D} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {9F050D17-3D9E-4A0F-B8F9-D90460ABDC76} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {28315BFD-90E7-4E14-A2EA-F3D23AF4126F} diff --git a/samples/EfCoreMigrationDemo/src/Acme.BookStore.DbMigrator/appsettings.json b/samples/EfCoreMigrationDemo/src/Acme.BookStore.DbMigrator/appsettings.json index f6b326ced2..5438e8dfa8 100644 --- a/samples/EfCoreMigrationDemo/src/Acme.BookStore.DbMigrator/appsettings.json +++ b/samples/EfCoreMigrationDemo/src/Acme.BookStore.DbMigrator/appsettings.json @@ -1,6 +1,9 @@ { "ConnectionStrings": { - "Default": "Server=localhost;Database=BookStore;Trusted_Connection=True;MultipleActiveResultSets=true" + "Default": "Server=localhost;Database=BookStore;Trusted_Connection=True;MultipleActiveResultSets=true", + "AbpPermissionManagement": "Server=localhost;Database=BookStore_SecondDb;Trusted_Connection=True;MultipleActiveResultSets=true", + "AbpSettingManagement": "Server=localhost;Database=BookStore_SecondDb;Trusted_Connection=True;MultipleActiveResultSets=true", + "AbpAuditLogging": "Server=localhost;Database=BookStore_SecondDb;Trusted_Connection=True;MultipleActiveResultSets=true" }, "IdentityServer": { "Clients": { diff --git a/samples/EfCoreMigrationDemo/src/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb.csproj b/samples/EfCoreMigrationDemo/src/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb.csproj new file mode 100644 index 0000000000..820dc9e4d0 --- /dev/null +++ b/samples/EfCoreMigrationDemo/src/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb.csproj @@ -0,0 +1,18 @@ + + + + + + netcoreapp3.1 + Acme.BookStore.DbMigrationsForSecondDb + + + + + + + + + + + \ No newline at end of file diff --git a/samples/EfCoreMigrationDemo/src/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb/EntityFrameworkCore/BookStoreEntityFrameworkCoreSecondDbMigrationsModule.cs b/samples/EfCoreMigrationDemo/src/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb/EntityFrameworkCore/BookStoreEntityFrameworkCoreSecondDbMigrationsModule.cs new file mode 100644 index 0000000000..bbc0798329 --- /dev/null +++ b/samples/EfCoreMigrationDemo/src/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb/EntityFrameworkCore/BookStoreEntityFrameworkCoreSecondDbMigrationsModule.cs @@ -0,0 +1,17 @@ +using Acme.BookStore.EntityFrameworkCore; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Modularity; + +namespace Acme.BookStore.DbMigrationsForSecondDb.EntityFrameworkCore +{ + [DependsOn( + typeof(BookStoreEntityFrameworkCoreModule) + )] + public class BookStoreEntityFrameworkCoreSecondDbMigrationsModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.AddAbpDbContext(); + } + } +} diff --git a/samples/EfCoreMigrationDemo/src/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb/EntityFrameworkCore/BookStoreSecondMigrationsDbContext.cs b/samples/EfCoreMigrationDemo/src/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb/EntityFrameworkCore/BookStoreSecondMigrationsDbContext.cs new file mode 100644 index 0000000000..791cff82f8 --- /dev/null +++ b/samples/EfCoreMigrationDemo/src/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb/EntityFrameworkCore/BookStoreSecondMigrationsDbContext.cs @@ -0,0 +1,28 @@ +using Microsoft.EntityFrameworkCore; +using Volo.Abp.AuditLogging.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; +using Volo.Abp.PermissionManagement.EntityFrameworkCore; +using Volo.Abp.SettingManagement.EntityFrameworkCore; + +namespace Acme.BookStore.DbMigrationsForSecondDb.EntityFrameworkCore +{ + public class BookStoreSecondMigrationsDbContext : AbpDbContext + { + public BookStoreSecondMigrationsDbContext( + DbContextOptions options) + : base(options) + { + } + + protected override void OnModelCreating(ModelBuilder builder) + { + base.OnModelCreating(builder); + + /* Include modules to your migration db context */ + + builder.ConfigurePermissionManagement(); + builder.ConfigureSettingManagement(); + builder.ConfigureAuditLogging(); + } + } +} \ No newline at end of file diff --git a/samples/EfCoreMigrationDemo/src/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb/EntityFrameworkCore/BookStoreSecondMigrationsDbContextFactory.cs b/samples/EfCoreMigrationDemo/src/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb/EntityFrameworkCore/BookStoreSecondMigrationsDbContextFactory.cs new file mode 100644 index 0000000000..81245dbb12 --- /dev/null +++ b/samples/EfCoreMigrationDemo/src/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb/EntityFrameworkCore/BookStoreSecondMigrationsDbContextFactory.cs @@ -0,0 +1,32 @@ +using System.IO; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Design; +using Microsoft.Extensions.Configuration; + +namespace Acme.BookStore.DbMigrationsForSecondDb.EntityFrameworkCore +{ + /* This class is needed for EF Core console commands + * (like Add-Migration and Update-Database commands) */ + public class BookStoreSecondMigrationsDbContextFactory + : IDesignTimeDbContextFactory + { + public BookStoreSecondMigrationsDbContext CreateDbContext(string[] args) + { + var configuration = BuildConfiguration(); + + var builder = new DbContextOptionsBuilder() + .UseSqlServer(configuration.GetConnectionString("AbpPermissionManagement")); + + return new BookStoreSecondMigrationsDbContext(builder.Options); + } + + private static IConfigurationRoot BuildConfiguration() + { + var builder = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json", optional: false); + + return builder.Build(); + } + } +} diff --git a/samples/EfCoreMigrationDemo/src/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb/EntityFrameworkCore/EntityFrameworkCoreBookStoreSecondDbSchemaMigrator.cs b/samples/EfCoreMigrationDemo/src/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb/EntityFrameworkCore/EntityFrameworkCoreBookStoreSecondDbSchemaMigrator.cs new file mode 100644 index 0000000000..ad6af7592a --- /dev/null +++ b/samples/EfCoreMigrationDemo/src/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb/EntityFrameworkCore/EntityFrameworkCoreBookStoreSecondDbSchemaMigrator.cs @@ -0,0 +1,34 @@ +using System; +using System.Threading.Tasks; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.DependencyInjection; + +namespace Acme.BookStore.DbMigrationsForSecondDb.EntityFrameworkCore +{ + [Dependency(ReplaceServices = true)] + public class EntityFrameworkCoreBookStoreSecondDbSchemaMigrator : ITransientDependency + { + private readonly IServiceProvider _serviceProvider; + + public EntityFrameworkCoreBookStoreSecondDbSchemaMigrator( + IServiceProvider serviceProvider) + { + _serviceProvider = serviceProvider; + } + + public async Task MigrateAsync() + { + /* We intentionally resolving the BookStoreMigrationsDbContext + * from IServiceProvider (instead of directly injecting it) + * to properly get the connection string of the current tenant in the + * current scope. + */ + + await _serviceProvider + .GetRequiredService() + .Database + .MigrateAsync(); + } + } +} \ No newline at end of file diff --git a/samples/EfCoreMigrationDemo/src/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb/Migrations/20200228120435_Initial.Designer.cs b/samples/EfCoreMigrationDemo/src/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb/Migrations/20200228120435_Initial.Designer.cs new file mode 100644 index 0000000000..27125897cf --- /dev/null +++ b/samples/EfCoreMigrationDemo/src/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb/Migrations/20200228120435_Initial.Designer.cs @@ -0,0 +1,362 @@ +// +using System; +using Acme.BookStore.DbMigrationsForSecondDb.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +namespace Acme.BookStore.DbMigrationsForSecondDb.Migrations +{ + [DbContext(typeof(BookStoreSecondMigrationsDbContext))] + [Migration("20200228120435_Initial")] + partial class Initial + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "3.1.0") + .HasAnnotation("Relational:MaxIdentifierLength", 128) + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApplicationName") + .HasColumnName("ApplicationName") + .HasColumnType("nvarchar(96)") + .HasMaxLength(96); + + b.Property("BrowserInfo") + .HasColumnName("BrowserInfo") + .HasColumnType("nvarchar(512)") + .HasMaxLength(512); + + b.Property("ClientId") + .HasColumnName("ClientId") + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("ClientIpAddress") + .HasColumnName("ClientIpAddress") + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("ClientName") + .HasColumnName("ClientName") + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.Property("Comments") + .HasColumnName("Comments") + .HasColumnType("nvarchar(256)") + .HasMaxLength(256); + + b.Property("ConcurrencyStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("CorrelationId") + .HasColumnName("CorrelationId") + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("Exceptions") + .HasColumnName("Exceptions") + .HasColumnType("nvarchar(4000)") + .HasMaxLength(4000); + + b.Property("ExecutionDuration") + .HasColumnName("ExecutionDuration") + .HasColumnType("int"); + + b.Property("ExecutionTime") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .HasColumnName("ExtraProperties") + .HasColumnType("nvarchar(max)"); + + b.Property("HttpMethod") + .HasColumnName("HttpMethod") + .HasColumnType("nvarchar(16)") + .HasMaxLength(16); + + b.Property("HttpStatusCode") + .HasColumnName("HttpStatusCode") + .HasColumnType("int"); + + b.Property("ImpersonatorTenantId") + .HasColumnName("ImpersonatorTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("ImpersonatorUserId") + .HasColumnName("ImpersonatorUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnName("TenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantName") + .HasColumnType("nvarchar(max)"); + + b.Property("Url") + .HasColumnName("Url") + .HasColumnType("nvarchar(256)") + .HasMaxLength(256); + + b.Property("UserId") + .HasColumnName("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("UserName") + .HasColumnName("UserName") + .HasColumnType("nvarchar(256)") + .HasMaxLength(256); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "ExecutionTime"); + + b.HasIndex("TenantId", "UserId", "ExecutionTime"); + + b.ToTable("AbpAuditLogs"); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AuditLogId") + .HasColumnName("AuditLogId") + .HasColumnType("uniqueidentifier"); + + b.Property("ExecutionDuration") + .HasColumnName("ExecutionDuration") + .HasColumnType("int"); + + b.Property("ExecutionTime") + .HasColumnName("ExecutionTime") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .HasColumnName("ExtraProperties") + .HasColumnType("nvarchar(max)"); + + b.Property("MethodName") + .HasColumnName("MethodName") + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.Property("Parameters") + .HasColumnName("Parameters") + .HasColumnType("nvarchar(2000)") + .HasMaxLength(2000); + + b.Property("ServiceName") + .HasColumnName("ServiceName") + .HasColumnType("nvarchar(256)") + .HasMaxLength(256); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("AuditLogId"); + + b.HasIndex("TenantId", "ServiceName", "MethodName", "ExecutionTime"); + + b.ToTable("AbpAuditLogActions"); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AuditLogId") + .HasColumnName("AuditLogId") + .HasColumnType("uniqueidentifier"); + + b.Property("ChangeTime") + .HasColumnName("ChangeTime") + .HasColumnType("datetime2"); + + b.Property("ChangeType") + .HasColumnName("ChangeType") + .HasColumnType("tinyint"); + + b.Property("EntityId") + .IsRequired() + .HasColumnName("EntityId") + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.Property("EntityTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("EntityTypeFullName") + .IsRequired() + .HasColumnName("EntityTypeFullName") + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.Property("ExtraProperties") + .HasColumnName("ExtraProperties") + .HasColumnType("nvarchar(max)"); + + b.Property("TenantId") + .HasColumnName("TenantId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("AuditLogId"); + + b.HasIndex("TenantId", "EntityTypeFullName", "EntityId"); + + b.ToTable("AbpEntityChanges"); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("EntityChangeId") + .HasColumnType("uniqueidentifier"); + + b.Property("NewValue") + .HasColumnName("NewValue") + .HasColumnType("nvarchar(512)") + .HasMaxLength(512); + + b.Property("OriginalValue") + .HasColumnName("OriginalValue") + .HasColumnType("nvarchar(512)") + .HasMaxLength(512); + + b.Property("PropertyName") + .IsRequired() + .HasColumnName("PropertyName") + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.Property("PropertyTypeFullName") + .IsRequired() + .HasColumnName("PropertyTypeFullName") + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("EntityChangeId"); + + b.ToTable("AbpEntityPropertyChanges"); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.Property("ProviderKey") + .IsRequired() + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("ProviderName") + .IsRequired() + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey"); + + b.ToTable("AbpPermissionGrants"); + }); + + modelBuilder.Entity("Volo.Abp.SettingManagement.Setting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.Property("ProviderKey") + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("ProviderName") + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("Value") + .IsRequired() + .HasColumnType("nvarchar(2048)") + .HasMaxLength(2048); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey"); + + b.ToTable("AbpSettings"); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => + { + b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) + .WithMany("Actions") + .HasForeignKey("AuditLogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) + .WithMany("EntityChanges") + .HasForeignKey("AuditLogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => + { + b.HasOne("Volo.Abp.AuditLogging.EntityChange", null) + .WithMany("PropertyChanges") + .HasForeignKey("EntityChangeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/samples/EfCoreMigrationDemo/src/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb/Migrations/20200228120435_Initial.cs b/samples/EfCoreMigrationDemo/src/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb/Migrations/20200228120435_Initial.cs new file mode 100644 index 0000000000..d6e0df3022 --- /dev/null +++ b/samples/EfCoreMigrationDemo/src/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb/Migrations/20200228120435_Initial.cs @@ -0,0 +1,212 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace Acme.BookStore.DbMigrationsForSecondDb.Migrations +{ + public partial class Initial : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "AbpAuditLogs", + columns: table => new + { + Id = table.Column(nullable: false), + ExtraProperties = table.Column(nullable: true), + ConcurrencyStamp = table.Column(nullable: true), + ApplicationName = table.Column(maxLength: 96, nullable: true), + UserId = table.Column(nullable: true), + UserName = table.Column(maxLength: 256, nullable: true), + TenantId = table.Column(nullable: true), + TenantName = table.Column(nullable: true), + ImpersonatorUserId = table.Column(nullable: true), + ImpersonatorTenantId = table.Column(nullable: true), + ExecutionTime = table.Column(nullable: false), + ExecutionDuration = table.Column(nullable: false), + ClientIpAddress = table.Column(maxLength: 64, nullable: true), + ClientName = table.Column(maxLength: 128, nullable: true), + ClientId = table.Column(maxLength: 64, nullable: true), + CorrelationId = table.Column(maxLength: 64, nullable: true), + BrowserInfo = table.Column(maxLength: 512, nullable: true), + HttpMethod = table.Column(maxLength: 16, nullable: true), + Url = table.Column(maxLength: 256, nullable: true), + Exceptions = table.Column(maxLength: 4000, nullable: true), + Comments = table.Column(maxLength: 256, nullable: true), + HttpStatusCode = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpAuditLogs", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpPermissionGrants", + columns: table => new + { + Id = table.Column(nullable: false), + TenantId = table.Column(nullable: true), + Name = table.Column(maxLength: 128, nullable: false), + ProviderName = table.Column(maxLength: 64, nullable: false), + ProviderKey = table.Column(maxLength: 64, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpPermissionGrants", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpSettings", + columns: table => new + { + Id = table.Column(nullable: false), + Name = table.Column(maxLength: 128, nullable: false), + Value = table.Column(maxLength: 2048, nullable: false), + ProviderName = table.Column(maxLength: 64, nullable: true), + ProviderKey = table.Column(maxLength: 64, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpSettings", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpAuditLogActions", + columns: table => new + { + Id = table.Column(nullable: false), + TenantId = table.Column(nullable: true), + AuditLogId = table.Column(nullable: false), + ServiceName = table.Column(maxLength: 256, nullable: true), + MethodName = table.Column(maxLength: 128, nullable: true), + Parameters = table.Column(maxLength: 2000, nullable: true), + ExecutionTime = table.Column(nullable: false), + ExecutionDuration = table.Column(nullable: false), + ExtraProperties = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpAuditLogActions", x => x.Id); + table.ForeignKey( + name: "FK_AbpAuditLogActions_AbpAuditLogs_AuditLogId", + column: x => x.AuditLogId, + principalTable: "AbpAuditLogs", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AbpEntityChanges", + columns: table => new + { + Id = table.Column(nullable: false), + AuditLogId = table.Column(nullable: false), + TenantId = table.Column(nullable: true), + ChangeTime = table.Column(nullable: false), + ChangeType = table.Column(nullable: false), + EntityTenantId = table.Column(nullable: true), + EntityId = table.Column(maxLength: 128, nullable: false), + EntityTypeFullName = table.Column(maxLength: 128, nullable: false), + ExtraProperties = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpEntityChanges", x => x.Id); + table.ForeignKey( + name: "FK_AbpEntityChanges_AbpAuditLogs_AuditLogId", + column: x => x.AuditLogId, + principalTable: "AbpAuditLogs", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AbpEntityPropertyChanges", + columns: table => new + { + Id = table.Column(nullable: false), + TenantId = table.Column(nullable: true), + EntityChangeId = table.Column(nullable: false), + NewValue = table.Column(maxLength: 512, nullable: true), + OriginalValue = table.Column(maxLength: 512, nullable: true), + PropertyName = table.Column(maxLength: 128, nullable: false), + PropertyTypeFullName = table.Column(maxLength: 64, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpEntityPropertyChanges", x => x.Id); + table.ForeignKey( + name: "FK_AbpEntityPropertyChanges_AbpEntityChanges_EntityChangeId", + column: x => x.EntityChangeId, + principalTable: "AbpEntityChanges", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_AbpAuditLogActions_AuditLogId", + table: "AbpAuditLogActions", + column: "AuditLogId"); + + migrationBuilder.CreateIndex( + name: "IX_AbpAuditLogActions_TenantId_ServiceName_MethodName_ExecutionTime", + table: "AbpAuditLogActions", + columns: new[] { "TenantId", "ServiceName", "MethodName", "ExecutionTime" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpAuditLogs_TenantId_ExecutionTime", + table: "AbpAuditLogs", + columns: new[] { "TenantId", "ExecutionTime" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpAuditLogs_TenantId_UserId_ExecutionTime", + table: "AbpAuditLogs", + columns: new[] { "TenantId", "UserId", "ExecutionTime" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpEntityChanges_AuditLogId", + table: "AbpEntityChanges", + column: "AuditLogId"); + + migrationBuilder.CreateIndex( + name: "IX_AbpEntityChanges_TenantId_EntityTypeFullName_EntityId", + table: "AbpEntityChanges", + columns: new[] { "TenantId", "EntityTypeFullName", "EntityId" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpEntityPropertyChanges_EntityChangeId", + table: "AbpEntityPropertyChanges", + column: "EntityChangeId"); + + migrationBuilder.CreateIndex( + name: "IX_AbpPermissionGrants_Name_ProviderName_ProviderKey", + table: "AbpPermissionGrants", + columns: new[] { "Name", "ProviderName", "ProviderKey" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpSettings_Name_ProviderName_ProviderKey", + table: "AbpSettings", + columns: new[] { "Name", "ProviderName", "ProviderKey" }); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "AbpAuditLogActions"); + + migrationBuilder.DropTable( + name: "AbpEntityPropertyChanges"); + + migrationBuilder.DropTable( + name: "AbpPermissionGrants"); + + migrationBuilder.DropTable( + name: "AbpSettings"); + + migrationBuilder.DropTable( + name: "AbpEntityChanges"); + + migrationBuilder.DropTable( + name: "AbpAuditLogs"); + } + } +} diff --git a/samples/EfCoreMigrationDemo/src/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb/Migrations/BookStoreSecondMigrationsDbContextModelSnapshot.cs b/samples/EfCoreMigrationDemo/src/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb/Migrations/BookStoreSecondMigrationsDbContextModelSnapshot.cs new file mode 100644 index 0000000000..abc5879572 --- /dev/null +++ b/samples/EfCoreMigrationDemo/src/Acme.BookStore.EntityFrameworkCore.DbMigrationsForSecondDb/Migrations/BookStoreSecondMigrationsDbContextModelSnapshot.cs @@ -0,0 +1,360 @@ +// +using System; +using Acme.BookStore.DbMigrationsForSecondDb.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +namespace Acme.BookStore.DbMigrationsForSecondDb.Migrations +{ + [DbContext(typeof(BookStoreSecondMigrationsDbContext))] + partial class BookStoreSecondMigrationsDbContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "3.1.0") + .HasAnnotation("Relational:MaxIdentifierLength", 128) + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApplicationName") + .HasColumnName("ApplicationName") + .HasColumnType("nvarchar(96)") + .HasMaxLength(96); + + b.Property("BrowserInfo") + .HasColumnName("BrowserInfo") + .HasColumnType("nvarchar(512)") + .HasMaxLength(512); + + b.Property("ClientId") + .HasColumnName("ClientId") + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("ClientIpAddress") + .HasColumnName("ClientIpAddress") + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("ClientName") + .HasColumnName("ClientName") + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.Property("Comments") + .HasColumnName("Comments") + .HasColumnType("nvarchar(256)") + .HasMaxLength(256); + + b.Property("ConcurrencyStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("CorrelationId") + .HasColumnName("CorrelationId") + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("Exceptions") + .HasColumnName("Exceptions") + .HasColumnType("nvarchar(4000)") + .HasMaxLength(4000); + + b.Property("ExecutionDuration") + .HasColumnName("ExecutionDuration") + .HasColumnType("int"); + + b.Property("ExecutionTime") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .HasColumnName("ExtraProperties") + .HasColumnType("nvarchar(max)"); + + b.Property("HttpMethod") + .HasColumnName("HttpMethod") + .HasColumnType("nvarchar(16)") + .HasMaxLength(16); + + b.Property("HttpStatusCode") + .HasColumnName("HttpStatusCode") + .HasColumnType("int"); + + b.Property("ImpersonatorTenantId") + .HasColumnName("ImpersonatorTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("ImpersonatorUserId") + .HasColumnName("ImpersonatorUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnName("TenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantName") + .HasColumnType("nvarchar(max)"); + + b.Property("Url") + .HasColumnName("Url") + .HasColumnType("nvarchar(256)") + .HasMaxLength(256); + + b.Property("UserId") + .HasColumnName("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("UserName") + .HasColumnName("UserName") + .HasColumnType("nvarchar(256)") + .HasMaxLength(256); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "ExecutionTime"); + + b.HasIndex("TenantId", "UserId", "ExecutionTime"); + + b.ToTable("AbpAuditLogs"); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AuditLogId") + .HasColumnName("AuditLogId") + .HasColumnType("uniqueidentifier"); + + b.Property("ExecutionDuration") + .HasColumnName("ExecutionDuration") + .HasColumnType("int"); + + b.Property("ExecutionTime") + .HasColumnName("ExecutionTime") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .HasColumnName("ExtraProperties") + .HasColumnType("nvarchar(max)"); + + b.Property("MethodName") + .HasColumnName("MethodName") + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.Property("Parameters") + .HasColumnName("Parameters") + .HasColumnType("nvarchar(2000)") + .HasMaxLength(2000); + + b.Property("ServiceName") + .HasColumnName("ServiceName") + .HasColumnType("nvarchar(256)") + .HasMaxLength(256); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("AuditLogId"); + + b.HasIndex("TenantId", "ServiceName", "MethodName", "ExecutionTime"); + + b.ToTable("AbpAuditLogActions"); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AuditLogId") + .HasColumnName("AuditLogId") + .HasColumnType("uniqueidentifier"); + + b.Property("ChangeTime") + .HasColumnName("ChangeTime") + .HasColumnType("datetime2"); + + b.Property("ChangeType") + .HasColumnName("ChangeType") + .HasColumnType("tinyint"); + + b.Property("EntityId") + .IsRequired() + .HasColumnName("EntityId") + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.Property("EntityTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("EntityTypeFullName") + .IsRequired() + .HasColumnName("EntityTypeFullName") + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.Property("ExtraProperties") + .HasColumnName("ExtraProperties") + .HasColumnType("nvarchar(max)"); + + b.Property("TenantId") + .HasColumnName("TenantId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("AuditLogId"); + + b.HasIndex("TenantId", "EntityTypeFullName", "EntityId"); + + b.ToTable("AbpEntityChanges"); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("EntityChangeId") + .HasColumnType("uniqueidentifier"); + + b.Property("NewValue") + .HasColumnName("NewValue") + .HasColumnType("nvarchar(512)") + .HasMaxLength(512); + + b.Property("OriginalValue") + .HasColumnName("OriginalValue") + .HasColumnType("nvarchar(512)") + .HasMaxLength(512); + + b.Property("PropertyName") + .IsRequired() + .HasColumnName("PropertyName") + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.Property("PropertyTypeFullName") + .IsRequired() + .HasColumnName("PropertyTypeFullName") + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("EntityChangeId"); + + b.ToTable("AbpEntityPropertyChanges"); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.Property("ProviderKey") + .IsRequired() + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("ProviderName") + .IsRequired() + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey"); + + b.ToTable("AbpPermissionGrants"); + }); + + modelBuilder.Entity("Volo.Abp.SettingManagement.Setting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(128)") + .HasMaxLength(128); + + b.Property("ProviderKey") + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("ProviderName") + .HasColumnType("nvarchar(64)") + .HasMaxLength(64); + + b.Property("Value") + .IsRequired() + .HasColumnType("nvarchar(2048)") + .HasMaxLength(2048); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey"); + + b.ToTable("AbpSettings"); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => + { + b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) + .WithMany("Actions") + .HasForeignKey("AuditLogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) + .WithMany("EntityChanges") + .HasForeignKey("AuditLogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => + { + b.HasOne("Volo.Abp.AuditLogging.EntityChange", null) + .WithMany("PropertyChanges") + .HasForeignKey("EntityChangeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/samples/EfCoreMigrationDemo/src/Acme.BookStore.Web/Acme.BookStore.Web.csproj b/samples/EfCoreMigrationDemo/src/Acme.BookStore.Web/Acme.BookStore.Web.csproj index 0c3dd9f03c..53faab21b7 100644 --- a/samples/EfCoreMigrationDemo/src/Acme.BookStore.Web/Acme.BookStore.Web.csproj +++ b/samples/EfCoreMigrationDemo/src/Acme.BookStore.Web/Acme.BookStore.Web.csproj @@ -44,6 +44,7 @@ + diff --git a/samples/EfCoreMigrationDemo/src/Acme.BookStore.Web/appsettings.json b/samples/EfCoreMigrationDemo/src/Acme.BookStore.Web/appsettings.json index 0c4e727e5b..1458495e4c 100644 --- a/samples/EfCoreMigrationDemo/src/Acme.BookStore.Web/appsettings.json +++ b/samples/EfCoreMigrationDemo/src/Acme.BookStore.Web/appsettings.json @@ -2,9 +2,12 @@ "App": { "SelfUrl": "https://localhost:44312" }, - "ConnectionStrings": { - "Default": "Server=localhost;Database=BookStore;Trusted_Connection=True;MultipleActiveResultSets=true" - }, +"ConnectionStrings": { + "Default": "Server=localhost;Database=BookStore;Trusted_Connection=True;MultipleActiveResultSets=true", + "AbpPermissionManagement": "Server=localhost;Database=BookStore_SecondDb;Trusted_Connection=True;MultipleActiveResultSets=true", + "AbpSettingManagement": "Server=localhost;Database=BookStore_SecondDb;Trusted_Connection=True;MultipleActiveResultSets=true", + "AbpAuditLogging": "Server=localhost;Database=BookStore_SecondDb;Trusted_Connection=True;MultipleActiveResultSets=true" +}, "AuthServer": { "Authority": "https://localhost:44312" },