From feb3de4a90bd0204ff1cd0f68a0d72ac187e6ccc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 28 May 2020 22:36:36 +0300 Subject: [PATCH] Created extension methods to set the database provider on the ModelBuilder. --- .../AbpModelBuilderExtensions.cs | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 framework/src/Volo.Abp.EntityFrameworkCore/Microsoft/EntityFrameworkCore/AbpModelBuilderExtensions.cs diff --git a/framework/src/Volo.Abp.EntityFrameworkCore/Microsoft/EntityFrameworkCore/AbpModelBuilderExtensions.cs b/framework/src/Volo.Abp.EntityFrameworkCore/Microsoft/EntityFrameworkCore/AbpModelBuilderExtensions.cs new file mode 100644 index 0000000000..88e5335a23 --- /dev/null +++ b/framework/src/Volo.Abp.EntityFrameworkCore/Microsoft/EntityFrameworkCore/AbpModelBuilderExtensions.cs @@ -0,0 +1,77 @@ +using Volo.Abp.EntityFrameworkCore; + +namespace Microsoft.EntityFrameworkCore +{ + public static class AbpModelBuilderExtensions + { + private const string ModelDatabaseProviderAnnotationKey = "_Abp_DatabaseProvider"; + + public static void SetDatabaseProvider( + this ModelBuilder modelBuilder, + EfCoreDatabaseProvider databaseProvider) + { + modelBuilder.Model.SetAnnotation(ModelDatabaseProviderAnnotationKey, databaseProvider); + } + + public static void ClearDatabaseProvider( + this ModelBuilder modelBuilder) + { + modelBuilder.Model.RemoveAnnotation(ModelDatabaseProviderAnnotationKey); + } + + public static EfCoreDatabaseProvider? GetDatabaseProvider( + this ModelBuilder modelBuilder + ) + { + return (EfCoreDatabaseProvider?) modelBuilder.Model[ModelDatabaseProviderAnnotationKey]; + } + + public static void UseMySQL( + this ModelBuilder modelBuilder) + { + modelBuilder.SetDatabaseProvider(EfCoreDatabaseProvider.MySql); + } + + public static void UseOracle( + this ModelBuilder modelBuilder) + { + modelBuilder.SetDatabaseProvider(EfCoreDatabaseProvider.Oracle); + } + + public static void UseSqlServer( + this ModelBuilder modelBuilder) + { + modelBuilder.SetDatabaseProvider(EfCoreDatabaseProvider.SqlServer); + } + + public static void UsePostgreSql( + this ModelBuilder modelBuilder) + { + modelBuilder.SetDatabaseProvider(EfCoreDatabaseProvider.PostgreSql); + } + + public static void UseSqlite( + this ModelBuilder modelBuilder) + { + modelBuilder.SetDatabaseProvider(EfCoreDatabaseProvider.Sqlite); + } + + public static void UseInMemory( + this ModelBuilder modelBuilder) + { + modelBuilder.SetDatabaseProvider(EfCoreDatabaseProvider.InMemory); + } + + public static void UseCosmos( + this ModelBuilder modelBuilder) + { + modelBuilder.SetDatabaseProvider(EfCoreDatabaseProvider.Cosmos); + } + + public static void UseFirebird( + this ModelBuilder modelBuilder) + { + modelBuilder.SetDatabaseProvider(EfCoreDatabaseProvider.Firebird); + } + } +} \ No newline at end of file