18 changed files with 99 additions and 357 deletions
@ -1,25 +0,0 @@ |
|||||
<Project Sdk="Microsoft.NET.Sdk"> |
|
||||
|
|
||||
<Import Project="..\..\..\..\common.props" /> |
|
||||
|
|
||||
<PropertyGroup> |
|
||||
<TargetFramework>net6.0</TargetFramework> |
|
||||
<RootNamespace>EShopOnAbp.CatalogService</RootNamespace> |
|
||||
</PropertyGroup> |
|
||||
|
|
||||
<ItemGroup> |
|
||||
<ProjectReference Include="..\EShopOnAbp.CatalogService.Domain\EShopOnAbp.CatalogService.Domain.csproj" /> |
|
||||
</ItemGroup> |
|
||||
|
|
||||
<ItemGroup> |
|
||||
<PackageReference Include="Volo.Abp.EntityFrameworkCore.PostgreSql" Version="5.0.0-rc.1" /> |
|
||||
</ItemGroup> |
|
||||
|
|
||||
<ItemGroup> |
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.0"> |
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> |
|
||||
<PrivateAssets>compile; contentFiles; build; buildMultitargeting; buildTransitive; analyzers; native</PrivateAssets> |
|
||||
</PackageReference> |
|
||||
</ItemGroup> |
|
||||
|
|
||||
</Project> |
|
||||
@ -1,34 +0,0 @@ |
|||||
using Microsoft.EntityFrameworkCore; |
|
||||
using Volo.Abp.Data; |
|
||||
using Volo.Abp.EntityFrameworkCore; |
|
||||
|
|
||||
namespace EShopOnAbp.CatalogService.EntityFrameworkCore |
|
||||
{ |
|
||||
[ConnectionStringName(CatalogServiceDbProperties.ConnectionStringName)] |
|
||||
public class CatalogServiceDbContext : |
|
||||
AbpDbContext<CatalogServiceDbContext> |
|
||||
{ |
|
||||
/* Add DbSet properties for your Aggregate Roots / Entities here. */ |
|
||||
|
|
||||
public CatalogServiceDbContext(DbContextOptions<CatalogServiceDbContext> options) |
|
||||
: base(options) |
|
||||
{ |
|
||||
} |
|
||||
|
|
||||
protected override void OnModelCreating(ModelBuilder builder) |
|
||||
{ |
|
||||
base.OnModelCreating(builder); |
|
||||
|
|
||||
/* Include modules to your migration db context */ |
|
||||
|
|
||||
/* Configure your own tables/entities inside here */ |
|
||||
|
|
||||
//builder.Entity<YourEntity>(b =>
|
|
||||
//{
|
|
||||
// b.ToTable(CatalogServiceConsts.DbTablePrefix + "YourEntities", CatalogServiceConsts.DbSchema);
|
|
||||
// b.ConfigureByConvention(); //auto configure for the base class props
|
|
||||
// //...
|
|
||||
//});
|
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
@ -1,38 +0,0 @@ |
|||||
using System.IO; |
|
||||
using Microsoft.EntityFrameworkCore; |
|
||||
using Microsoft.EntityFrameworkCore.Design; |
|
||||
using Microsoft.Extensions.Configuration; |
|
||||
|
|
||||
namespace EShopOnAbp.CatalogService.EntityFrameworkCore |
|
||||
{ |
|
||||
/* This class is needed for EF Core console commands |
|
||||
* (like Add-Migration and Update-Database commands) */ |
|
||||
public class CatalogServiceDbContextFactory : IDesignTimeDbContextFactory<CatalogServiceDbContext> |
|
||||
{ |
|
||||
public CatalogServiceDbContext CreateDbContext(string[] args) |
|
||||
{ |
|
||||
CatalogServiceEfCoreEntityExtensionMappings.Configure(); |
|
||||
|
|
||||
var configuration = BuildConfiguration(); |
|
||||
|
|
||||
var builder = new DbContextOptionsBuilder<CatalogServiceDbContext>() |
|
||||
.UseNpgsql( |
|
||||
configuration.GetConnectionString(CatalogServiceDbProperties.ConnectionStringName), |
|
||||
b => |
|
||||
{ |
|
||||
b.MigrationsHistoryTable("__CatalogService_Migrations"); |
|
||||
}); |
|
||||
|
|
||||
return new CatalogServiceDbContext(builder.Options); |
|
||||
} |
|
||||
|
|
||||
private static IConfigurationRoot BuildConfiguration() |
|
||||
{ |
|
||||
var builder = new ConfigurationBuilder() |
|
||||
.SetBasePath(Path.Combine(Directory.GetCurrentDirectory(), "../EShopOnAbp.CatalogService.HttpApi.Host")) |
|
||||
.AddJsonFile("appsettings.json", optional: false); |
|
||||
|
|
||||
return builder.Build(); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
@ -1,39 +0,0 @@ |
|||||
using Volo.Abp.Threading; |
|
||||
|
|
||||
namespace EShopOnAbp.CatalogService.EntityFrameworkCore |
|
||||
{ |
|
||||
public static class CatalogServiceEfCoreEntityExtensionMappings |
|
||||
{ |
|
||||
private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner(); |
|
||||
|
|
||||
public static void Configure() |
|
||||
{ |
|
||||
OneTimeRunner.Run(() => |
|
||||
{ |
|
||||
/* You can configure extra properties for the |
|
||||
* entities defined in the modules used by your application. |
|
||||
* |
|
||||
* This class can be used to map these extra properties to table fields in the database. |
|
||||
* |
|
||||
* USE THIS CLASS ONLY TO CONFIGURE EF CORE RELATED MAPPING. |
|
||||
* USE CatalogServiceModuleExtensionConfigurator CLASS (in the Domain.Shared project) |
|
||||
* FOR A HIGH LEVEL API TO DEFINE EXTRA PROPERTIES TO ENTITIES OF THE USED MODULES |
|
||||
* |
|
||||
* Example: Map a property to a table field: |
|
||||
|
|
||||
ObjectExtensionManager.Instance |
|
||||
.MapEfCoreProperty<IdentityUser, string>( |
|
||||
"MyProperty", |
|
||||
(entityBuilder, propertyBuilder) => |
|
||||
{ |
|
||||
propertyBuilder.HasMaxLength(128); |
|
||||
} |
|
||||
); |
|
||||
|
|
||||
* See the documentation for more: |
|
||||
* https://docs.abp.io/en/abp/latest/Customizing-Application-Modules-Extending-Entities
|
|
||||
*/ |
|
||||
}); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
@ -1,37 +0,0 @@ |
|||||
using Microsoft.Extensions.DependencyInjection; |
|
||||
using Volo.Abp.EntityFrameworkCore; |
|
||||
using Volo.Abp.EntityFrameworkCore.PostgreSql; |
|
||||
using Volo.Abp.Modularity; |
|
||||
|
|
||||
namespace EShopOnAbp.CatalogService.EntityFrameworkCore |
|
||||
{ |
|
||||
[DependsOn( |
|
||||
typeof(CatalogServiceDomainModule), |
|
||||
typeof(AbpEntityFrameworkCorePostgreSqlModule) |
|
||||
)] |
|
||||
public class CatalogServiceEntityFrameworkCoreModule : AbpModule |
|
||||
{ |
|
||||
public override void PreConfigureServices(ServiceConfigurationContext context) |
|
||||
{ |
|
||||
CatalogServiceEfCoreEntityExtensionMappings.Configure(); |
|
||||
} |
|
||||
|
|
||||
public override void ConfigureServices(ServiceConfigurationContext context) |
|
||||
{ |
|
||||
context.Services.AddAbpDbContext<CatalogServiceDbContext>(options => |
|
||||
{ |
|
||||
/* Remove "includeAllEntities: true" to create |
|
||||
* default repositories only for aggregate roots */ |
|
||||
options.AddDefaultRepositories(includeAllEntities: true); |
|
||||
}); |
|
||||
|
|
||||
Configure<AbpDbContextOptions>(options => |
|
||||
{ |
|
||||
options.UseNpgsql(b => |
|
||||
{ |
|
||||
b.MigrationsHistoryTable("__CatalogService_Migrations"); |
|
||||
}); |
|
||||
}); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
@ -1,30 +0,0 @@ |
|||||
// <auto-generated />
|
|
||||
using EShopOnAbp.CatalogService.EntityFrameworkCore; |
|
||||
using Microsoft.EntityFrameworkCore; |
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure; |
|
||||
using Microsoft.EntityFrameworkCore.Migrations; |
|
||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion; |
|
||||
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; |
|
||||
using Volo.Abp.EntityFrameworkCore; |
|
||||
|
|
||||
#nullable disable |
|
||||
|
|
||||
namespace EShopOnAbp.CatalogService.Migrations |
|
||||
{ |
|
||||
[DbContext(typeof(CatalogServiceDbContext))] |
|
||||
[Migration("20211125124215_Initial")] |
|
||||
partial class Initial |
|
||||
{ |
|
||||
protected override void BuildTargetModel(ModelBuilder modelBuilder) |
|
||||
{ |
|
||||
#pragma warning disable 612, 618
|
|
||||
modelBuilder |
|
||||
.HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.PostgreSql) |
|
||||
.HasAnnotation("ProductVersion", "6.0.0") |
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 63); |
|
||||
|
|
||||
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); |
|
||||
#pragma warning restore 612, 618
|
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
@ -1,19 +0,0 @@ |
|||||
using Microsoft.EntityFrameworkCore.Migrations; |
|
||||
|
|
||||
#nullable disable |
|
||||
|
|
||||
namespace EShopOnAbp.CatalogService.Migrations |
|
||||
{ |
|
||||
public partial class Initial : Migration |
|
||||
{ |
|
||||
protected override void Up(MigrationBuilder migrationBuilder) |
|
||||
{ |
|
||||
|
|
||||
} |
|
||||
|
|
||||
protected override void Down(MigrationBuilder migrationBuilder) |
|
||||
{ |
|
||||
|
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
@ -1,28 +0,0 @@ |
|||||
// <auto-generated />
|
|
||||
using EShopOnAbp.CatalogService.EntityFrameworkCore; |
|
||||
using Microsoft.EntityFrameworkCore; |
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure; |
|
||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion; |
|
||||
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; |
|
||||
using Volo.Abp.EntityFrameworkCore; |
|
||||
|
|
||||
#nullable disable |
|
||||
|
|
||||
namespace EShopOnAbp.CatalogService.Migrations |
|
||||
{ |
|
||||
[DbContext(typeof(CatalogServiceDbContext))] |
|
||||
partial class CatalogServiceDbContextModelSnapshot : ModelSnapshot |
|
||||
{ |
|
||||
protected override void BuildModel(ModelBuilder modelBuilder) |
|
||||
{ |
|
||||
#pragma warning disable 612, 618
|
|
||||
modelBuilder |
|
||||
.HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.PostgreSql) |
|
||||
.HasAnnotation("ProductVersion", "6.0.0") |
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 63); |
|
||||
|
|
||||
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); |
|
||||
#pragma warning restore 612, 618
|
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
@ -1,2 +0,0 @@ |
|||||
using System.Runtime.CompilerServices; |
|
||||
[assembly:InternalsVisibleToAttribute("EShopOnAbp.CatalogService.EntityFrameworkCore.Tests")] |
|
||||
@ -0,0 +1,15 @@ |
|||||
|
<Project Sdk="Microsoft.NET.Sdk"> |
||||
|
|
||||
|
<Import Project="..\..\..\..\common.props" /> |
||||
|
|
||||
|
<PropertyGroup> |
||||
|
<TargetFramework>net6.0</TargetFramework> |
||||
|
<RootNamespace>EShopOnAbp.CatalogService</RootNamespace> |
||||
|
</PropertyGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<PackageReference Include="Volo.Abp.MongoDB" Version="5.0.0-rc.1" /> |
||||
|
<ProjectReference Include="..\EShopOnAbp.CatalogService.Domain\EShopOnAbp.CatalogService.Domain.csproj" /> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
</Project> |
||||
@ -0,0 +1,20 @@ |
|||||
|
using Volo.Abp.Data; |
||||
|
using Volo.Abp.MongoDB; |
||||
|
|
||||
|
namespace EShopOnAbp.CatalogService.MongoDB |
||||
|
{ |
||||
|
[ConnectionStringName(CatalogServiceDbProperties.ConnectionStringName)] |
||||
|
public class CatalogServiceMongoDbContext : AbpMongoDbContext, ICatalogServiceMongoDbContext |
||||
|
{ |
||||
|
/* Add mongo collections here. Example: |
||||
|
* public IMongoCollection<Question> Questions => Collection<Question>(); |
||||
|
*/ |
||||
|
|
||||
|
protected override void CreateModel(IMongoModelBuilder modelBuilder) |
||||
|
{ |
||||
|
base.CreateModel(modelBuilder); |
||||
|
|
||||
|
modelBuilder.ConfigureCatalogService(); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,14 @@ |
|||||
|
using Volo.Abp; |
||||
|
using Volo.Abp.MongoDB; |
||||
|
|
||||
|
namespace EShopOnAbp.CatalogService.MongoDB |
||||
|
{ |
||||
|
public static class CatalogServiceMongoDbContextExtensions |
||||
|
{ |
||||
|
public static void ConfigureCatalogService( |
||||
|
this IMongoModelBuilder builder) |
||||
|
{ |
||||
|
Check.NotNull(builder, nameof(builder)); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,23 @@ |
|||||
|
using Microsoft.Extensions.DependencyInjection; |
||||
|
using Volo.Abp.Modularity; |
||||
|
using Volo.Abp.MongoDB; |
||||
|
|
||||
|
namespace EShopOnAbp.CatalogService.MongoDB |
||||
|
{ |
||||
|
[DependsOn( |
||||
|
typeof(CatalogServiceDomainModule), |
||||
|
typeof(AbpMongoDbModule) |
||||
|
)] |
||||
|
public class CatalogServiceMongoDbModule : AbpModule |
||||
|
{ |
||||
|
public override void ConfigureServices(ServiceConfigurationContext context) |
||||
|
{ |
||||
|
context.Services.AddMongoDbContext<CatalogServiceMongoDbContext>(options => |
||||
|
{ |
||||
|
/* Add custom repositories here. Example: |
||||
|
* options.AddRepository<Question, MongoQuestionRepository>(); |
||||
|
*/ |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,13 @@ |
|||||
|
using Volo.Abp.Data; |
||||
|
using Volo.Abp.MongoDB; |
||||
|
|
||||
|
namespace EShopOnAbp.CatalogService.MongoDB |
||||
|
{ |
||||
|
[ConnectionStringName(CatalogServiceDbProperties.ConnectionStringName)] |
||||
|
public interface ICatalogServiceMongoDbContext : IAbpMongoDbContext |
||||
|
{ |
||||
|
/* Define mongo collections here. Example: |
||||
|
* IMongoCollection<Question> Questions { get; } |
||||
|
*/ |
||||
|
} |
||||
|
} |
||||
@ -1,20 +0,0 @@ |
|||||
<Project Sdk="Microsoft.NET.Sdk"> |
|
||||
|
|
||||
<Import Project="..\..\..\..\common.props" /> |
|
||||
|
|
||||
<PropertyGroup> |
|
||||
<TargetFramework>net6.0</TargetFramework> |
|
||||
<RootNamespace>EShopOnAbp.CatalogService</RootNamespace> |
|
||||
</PropertyGroup> |
|
||||
|
|
||||
<ItemGroup> |
|
||||
<ProjectReference Include="..\..\src\EShopOnAbp.CatalogService.EntityFrameworkCore\EShopOnAbp.CatalogService.EntityFrameworkCore.csproj" /> |
|
||||
<ProjectReference Include="..\EShopOnAbp.CatalogService.TestBase\EShopOnAbp.CatalogService.TestBase.csproj" /> |
|
||||
<PackageReference Include="Volo.Abp.EntityFrameworkCore.Sqlite" Version="5.0.0-rc.1" /> |
|
||||
</ItemGroup> |
|
||||
|
|
||||
<ItemGroup> |
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" /> |
|
||||
</ItemGroup> |
|
||||
|
|
||||
</Project> |
|
||||
@ -1,9 +0,0 @@ |
|||||
using Volo.Abp; |
|
||||
|
|
||||
namespace EShopOnAbp.CatalogService.EntityFrameworkCore |
|
||||
{ |
|
||||
public abstract class CatalogServiceEntityFrameworkCoreTestBase : CatalogServiceTestBase<CatalogServiceEntityFrameworkCoreTestModule> |
|
||||
{ |
|
||||
|
|
||||
} |
|
||||
} |
|
||||
@ -1,62 +0,0 @@ |
|||||
using Microsoft.Data.Sqlite; |
|
||||
using Microsoft.EntityFrameworkCore; |
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure; |
|
||||
using Microsoft.EntityFrameworkCore.Storage; |
|
||||
using Microsoft.Extensions.DependencyInjection; |
|
||||
using Volo.Abp; |
|
||||
using Volo.Abp.EntityFrameworkCore; |
|
||||
using Volo.Abp.EntityFrameworkCore.Sqlite; |
|
||||
using Volo.Abp.Modularity; |
|
||||
|
|
||||
namespace EShopOnAbp.CatalogService.EntityFrameworkCore |
|
||||
{ |
|
||||
[DependsOn( |
|
||||
typeof(CatalogServiceEntityFrameworkCoreModule), |
|
||||
typeof(CatalogServiceTestBaseModule), |
|
||||
typeof(AbpEntityFrameworkCoreSqliteModule) |
|
||||
)] |
|
||||
public class CatalogServiceEntityFrameworkCoreTestModule : AbpModule |
|
||||
{ |
|
||||
private SqliteConnection _sqliteConnection; |
|
||||
|
|
||||
public override void ConfigureServices(ServiceConfigurationContext context) |
|
||||
{ |
|
||||
ConfigureInMemorySqlite(context.Services); |
|
||||
} |
|
||||
|
|
||||
private void ConfigureInMemorySqlite(IServiceCollection services) |
|
||||
{ |
|
||||
_sqliteConnection = CreateDatabaseAndGetConnection(); |
|
||||
|
|
||||
services.Configure<AbpDbContextOptions>(options => |
|
||||
{ |
|
||||
options.Configure(context => |
|
||||
{ |
|
||||
context.DbContextOptions.UseSqlite(_sqliteConnection); |
|
||||
}); |
|
||||
}); |
|
||||
} |
|
||||
|
|
||||
public override void OnApplicationShutdown(ApplicationShutdownContext context) |
|
||||
{ |
|
||||
_sqliteConnection.Dispose(); |
|
||||
} |
|
||||
|
|
||||
private static SqliteConnection CreateDatabaseAndGetConnection() |
|
||||
{ |
|
||||
var connection = new SqliteConnection("Data Source=:memory:"); |
|
||||
connection.Open(); |
|
||||
|
|
||||
var options = new DbContextOptionsBuilder<CatalogServiceDbContext>() |
|
||||
.UseSqlite(connection) |
|
||||
.Options; |
|
||||
|
|
||||
using (var context = new CatalogServiceDbContext(options)) |
|
||||
{ |
|
||||
context.GetService<IRelationalDatabaseCreator>().CreateTables(); |
|
||||
} |
|
||||
|
|
||||
return connection; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
Loading…
Reference in new issue