Browse Source

Merge pull request #6762 from abpframework/test-perf

Performance Test Application (Initial)
pull/6772/head
Halil İbrahim Kalkan 6 years ago
committed by GitHub
parent
commit
1b37b368e3
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 17
      test/AbpPerfTest/AbpPerfTest.WithAbp/AbpPerfTest.WithAbp.csproj
  2. 55
      test/AbpPerfTest/AbpPerfTest.WithAbp/AppModule.cs
  3. 86
      test/AbpPerfTest/AbpPerfTest.WithAbp/Controllers/BookController.cs
  4. 15
      test/AbpPerfTest/AbpPerfTest.WithAbp/Dtos/BookDto.cs
  5. 11
      test/AbpPerfTest/AbpPerfTest.WithAbp/Dtos/CreateUpdateBookDto.cs
  6. 19
      test/AbpPerfTest/AbpPerfTest.WithAbp/Entities/Book.cs
  7. 28
      test/AbpPerfTest/AbpPerfTest.WithAbp/EntityFramework/BookDbContext.cs
  8. 29
      test/AbpPerfTest/AbpPerfTest.WithAbp/EntityFramework/BookDbContextFactory.cs
  9. 48
      test/AbpPerfTest/AbpPerfTest.WithAbp/Migrations/20201222135738_Added_Books.Designer.cs
  10. 31
      test/AbpPerfTest/AbpPerfTest.WithAbp/Migrations/20201222135738_Added_Books.cs
  11. 46
      test/AbpPerfTest/AbpPerfTest.WithAbp/Migrations/BookDbContextModelSnapshot.cs
  12. 21
      test/AbpPerfTest/AbpPerfTest.WithAbp/Program.cs
  13. 28
      test/AbpPerfTest/AbpPerfTest.WithAbp/Properties/launchSettings.json
  14. 18
      test/AbpPerfTest/AbpPerfTest.WithAbp/Startup.cs
  15. 9
      test/AbpPerfTest/AbpPerfTest.WithAbp/appsettings.Development.json
  16. 13
      test/AbpPerfTest/AbpPerfTest.WithAbp/appsettings.json
  17. 15
      test/AbpPerfTest/AbpPerfTest.WithoutAbp/AbpPerfTest.WithoutAbp.csproj
  18. 93
      test/AbpPerfTest/AbpPerfTest.WithoutAbp/Controllers/BookController.cs
  19. 15
      test/AbpPerfTest/AbpPerfTest.WithoutAbp/Dtos/BookDto.cs
  20. 11
      test/AbpPerfTest/AbpPerfTest.WithoutAbp/Dtos/CreateUpdateBookDto.cs
  21. 20
      test/AbpPerfTest/AbpPerfTest.WithoutAbp/Entities/Book.cs
  22. 27
      test/AbpPerfTest/AbpPerfTest.WithoutAbp/EntityFramework/BookDbContext.cs
  23. 29
      test/AbpPerfTest/AbpPerfTest.WithoutAbp/EntityFramework/BookDbContextFactory.cs
  24. 47
      test/AbpPerfTest/AbpPerfTest.WithoutAbp/Migrations/20201222132615_Added_Books.Designer.cs
  25. 31
      test/AbpPerfTest/AbpPerfTest.WithoutAbp/Migrations/20201222132615_Added_Books.cs
  26. 45
      test/AbpPerfTest/AbpPerfTest.WithoutAbp/Migrations/BookDbContextModelSnapshot.cs
  27. 17
      test/AbpPerfTest/AbpPerfTest.WithoutAbp/Program.cs
  28. 28
      test/AbpPerfTest/AbpPerfTest.WithoutAbp/Properties/launchSettings.json
  29. 45
      test/AbpPerfTest/AbpPerfTest.WithoutAbp/Startup.cs
  30. 9
      test/AbpPerfTest/AbpPerfTest.WithoutAbp/appsettings.Development.json
  31. 13
      test/AbpPerfTest/AbpPerfTest.WithoutAbp/appsettings.json
  32. 22
      test/AbpPerfTest/AbpPerfTest.sln

17
test/AbpPerfTest/AbpPerfTest.WithAbp/AbpPerfTest.WithAbp.csproj

@ -0,0 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.AspNetCore.Mvc" Version="4.0.2"/>
<PackageReference Include="Volo.Abp.Autofac" Version="4.0.2"/>
<PackageReference Include="Volo.Abp.EntityFrameworkCore.SqlServer" Version="4.0.2"/>
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="5.0.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
</Project>

55
test/AbpPerfTest/AbpPerfTest.WithAbp/AppModule.cs

@ -0,0 +1,55 @@
using AbpPerfTest.WithAbp.EntityFramework;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Volo.Abp;
using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.Autofac;
using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore.SqlServer;
using Volo.Abp.Modularity;
using Volo.Abp.Uow;
namespace AbpPerfTest.WithAbp
{
[DependsOn(
typeof(AbpAspNetCoreMvcModule),
typeof(AbpAutofacModule),
typeof(AbpEntityFrameworkCoreSqlServerModule)
)]
public class AppModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
context.Services.AddAbpDbContext<BookDbContext>(options =>
{
options.AddDefaultRepositories();
});
Configure<AbpDbContextOptions>(options =>
{
options.UseSqlServer();
});
Configure<AbpUnitOfWorkDefaultOptions>(options =>
{
options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled;
});
}
public override void OnApplicationInitialization(ApplicationInitializationContext context)
{
var app = context.GetApplicationBuilder();
var env = context.GetEnvironment();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseConfiguredEndpoints();
}
}
}

86
test/AbpPerfTest/AbpPerfTest.WithAbp/Controllers/BookController.cs

@ -0,0 +1,86 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using AbpPerfTest.WithAbp.Dtos;
using AbpPerfTest.WithAbp.Entities;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.Domain.Repositories;
namespace AbpPerfTest.WithAbp.Controllers
{
[Route("api/books")]
public class BookController : Controller
{
private readonly IRepository<Book, Guid> _bookRepository;
public BookController(IRepository<Book, Guid> bookRepository)
{
_bookRepository = bookRepository;
}
[HttpGet]
public async Task<List<BookDto>> GetListAsync()
{
var books = await _bookRepository.GetListAsync();
return books
.Select(b => new BookDto
{
Id = b.Id,
Name = b.Name,
Price = b.Price,
IsAvailable = b.IsAvailable
})
.ToList();
}
[HttpGet]
[Route("{id}")]
public async Task<BookDto> GetAsync(Guid id)
{
var book = await _bookRepository.GetAsync(id);
return new BookDto
{
Id = book.Id,
Name = book.Name,
Price = book.Price,
IsAvailable = book.IsAvailable
};
}
[HttpPost]
public async Task<Guid> CreateAsync(CreateUpdateBookDto input)
{
var book = new Book
{
Name = input.Name,
Price = input.Price,
IsAvailable = input.IsAvailable
};
await _bookRepository.InsertAsync(book);
return book.Id;
}
[HttpPut]
[Route("{id}")]
public async Task UpdateAsync(Guid id, CreateUpdateBookDto input)
{
var book = await _bookRepository.GetAsync(id);
book.Name = input.Name;
book.Price = input.Price;
book.IsAvailable = input.IsAvailable;
}
[HttpDelete]
[Route("{id}")]
public async Task DeleteAsync(Guid id)
{
await _bookRepository.DeleteAsync(id);
}
}
}

15
test/AbpPerfTest/AbpPerfTest.WithAbp/Dtos/BookDto.cs

@ -0,0 +1,15 @@
using System;
namespace AbpPerfTest.WithAbp.Dtos
{
public class BookDto
{
public Guid Id { get; set; }
public string Name { get; set; }
public float Price { get; set; }
public bool IsAvailable { get; set; }
}
}

11
test/AbpPerfTest/AbpPerfTest.WithAbp/Dtos/CreateUpdateBookDto.cs

@ -0,0 +1,11 @@
namespace AbpPerfTest.WithAbp.Dtos
{
public class CreateUpdateBookDto
{
public string Name { get; set; }
public float Price { get; set; }
public bool IsAvailable { get; set; }
}
}

19
test/AbpPerfTest/AbpPerfTest.WithAbp/Entities/Book.cs

@ -0,0 +1,19 @@
using System;
using Volo.Abp.Domain.Entities;
namespace AbpPerfTest.WithAbp.Entities
{
public class Book : BasicAggregateRoot<Guid>
{
public string Name { get; set; }
public float Price { get; set; }
public bool IsAvailable { get; set; }
public Book()
{
Id = Guid.NewGuid();
}
}
}

28
test/AbpPerfTest/AbpPerfTest.WithAbp/EntityFramework/BookDbContext.cs

@ -0,0 +1,28 @@
using AbpPerfTest.WithAbp.Entities;
using Microsoft.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
namespace AbpPerfTest.WithAbp.EntityFramework
{
public class BookDbContext : AbpDbContext<BookDbContext>
{
public DbSet<Book> Books { get; set; }
public BookDbContext(DbContextOptions<BookDbContext> builderOptions)
: base(builderOptions)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Book>(b =>
{
b.ToTable("Books");
b.Property(x => x.Name).HasMaxLength(128);
});
}
}
}

29
test/AbpPerfTest/AbpPerfTest.WithAbp/EntityFramework/BookDbContextFactory.cs

@ -0,0 +1,29 @@
using System.IO;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;
using Microsoft.Extensions.Configuration;
namespace AbpPerfTest.WithAbp.EntityFramework
{
public class BookDbContextFactory : IDesignTimeDbContextFactory<BookDbContext>
{
public BookDbContext CreateDbContext(string[] args)
{
var configuration = BuildConfiguration();
var builder = new DbContextOptionsBuilder<BookDbContext>()
.UseSqlServer(configuration.GetConnectionString("Default"));
return new BookDbContext(builder.Options);
}
private static IConfigurationRoot BuildConfiguration()
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false);
return builder.Build();
}
}
}

48
test/AbpPerfTest/AbpPerfTest.WithAbp/Migrations/20201222135738_Added_Books.Designer.cs

@ -0,0 +1,48 @@
// <auto-generated />
using System;
using AbpPerfTest.WithAbp.EntityFramework;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Volo.Abp.EntityFrameworkCore;
namespace AbpPerfTest.WithAbp.Migrations
{
[DbContext(typeof(BookDbContext))]
[Migration("20201222135738_Added_Books")]
partial class Added_Books
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.UseIdentityColumns()
.HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer)
.HasAnnotation("Relational:MaxIdentifierLength", 128)
.HasAnnotation("ProductVersion", "5.0.1");
modelBuilder.Entity("AbpPerfTest.WithAbp.Entities.Book", b =>
{
b.Property<Guid>("Id")
.HasColumnType("uniqueidentifier");
b.Property<bool>("IsAvailable")
.HasColumnType("bit");
b.Property<string>("Name")
.HasMaxLength(128)
.HasColumnType("nvarchar(128)");
b.Property<float>("Price")
.HasColumnType("real");
b.HasKey("Id");
b.ToTable("Books");
});
#pragma warning restore 612, 618
}
}
}

31
test/AbpPerfTest/AbpPerfTest.WithAbp/Migrations/20201222135738_Added_Books.cs

@ -0,0 +1,31 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
namespace AbpPerfTest.WithAbp.Migrations
{
public partial class Added_Books : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Books",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
Name = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: true),
Price = table.Column<float>(type: "real", nullable: false),
IsAvailable = table.Column<bool>(type: "bit", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Books", x => x.Id);
});
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "Books");
}
}
}

46
test/AbpPerfTest/AbpPerfTest.WithAbp/Migrations/BookDbContextModelSnapshot.cs

@ -0,0 +1,46 @@
// <auto-generated />
using System;
using AbpPerfTest.WithAbp.EntityFramework;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Volo.Abp.EntityFrameworkCore;
namespace AbpPerfTest.WithAbp.Migrations
{
[DbContext(typeof(BookDbContext))]
partial class BookDbContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.UseIdentityColumns()
.HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer)
.HasAnnotation("Relational:MaxIdentifierLength", 128)
.HasAnnotation("ProductVersion", "5.0.1");
modelBuilder.Entity("AbpPerfTest.WithAbp.Entities.Book", b =>
{
b.Property<Guid>("Id")
.HasColumnType("uniqueidentifier");
b.Property<bool>("IsAvailable")
.HasColumnType("bit");
b.Property<string>("Name")
.HasMaxLength(128)
.HasColumnType("nvarchar(128)");
b.Property<float>("Price")
.HasColumnType("real");
b.HasKey("Id");
b.ToTable("Books");
});
#pragma warning restore 612, 618
}
}
}

21
test/AbpPerfTest/AbpPerfTest.WithAbp/Program.cs

@ -0,0 +1,21 @@
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
namespace AbpPerfTest.WithAbp
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.UseAutofac();
}
}

28
test/AbpPerfTest/AbpPerfTest.WithAbp/Properties/launchSettings.json

@ -0,0 +1,28 @@
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:50732",
"sslPort": 44312
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"AbpPerfTest.WithAbp": {
"commandName": "Project",
"dotnetRunMessages": "true",
"launchBrowser": true,
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}

18
test/AbpPerfTest/AbpPerfTest.WithAbp/Startup.cs

@ -0,0 +1,18 @@
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
namespace AbpPerfTest.WithAbp
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddApplication<AppModule>();
}
public void Configure(IApplicationBuilder app)
{
app.InitializeApplication();
}
}
}

9
test/AbpPerfTest/AbpPerfTest.WithAbp/appsettings.Development.json

@ -0,0 +1,9 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
}
}

13
test/AbpPerfTest/AbpPerfTest.WithAbp/appsettings.json

@ -0,0 +1,13 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"Default": "Server=(LocalDb)\\MSSQLLocalDB;Database=AbpPerfTest_WithAbp;Trusted_Connection=True;MultipleActiveResultSets=true"
}
}

15
test/AbpPerfTest/AbpPerfTest.WithoutAbp/AbpPerfTest.WithoutAbp.csproj

@ -0,0 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="5.0.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.1"/>
</ItemGroup>
</Project>

93
test/AbpPerfTest/AbpPerfTest.WithoutAbp/Controllers/BookController.cs

@ -0,0 +1,93 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using AbpPerfTest.WithoutAbp.Dtos;
using AbpPerfTest.WithoutAbp.Entities;
using AbpPerfTest.WithoutAbp.EntityFramework;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
namespace AbpPerfTest.WithoutAbp.Controllers
{
[Route("api/books")]
public class BookController : Controller
{
private readonly BookDbContext _bookDbContext;
public BookController(BookDbContext bookDbContext)
{
_bookDbContext = bookDbContext;
}
[HttpGet]
public async Task<List<BookDto>> GetListAsync()
{
var books = await _bookDbContext.Books.ToListAsync();
return books
.Select(b => new BookDto
{
Id = b.Id,
Name = b.Name,
Price = b.Price,
IsAvailable = b.IsAvailable
})
.ToList();
}
[HttpGet]
[Route("{id}")]
public async Task<BookDto> GetAsync(Guid id)
{
var book = await _bookDbContext.Books.SingleAsync(b => b.Id == id);
return new BookDto
{
Id = book.Id,
Name = book.Name,
Price = book.Price,
IsAvailable = book.IsAvailable
};
}
[HttpPost]
public async Task<Guid> CreateAsync(CreateUpdateBookDto input)
{
var book = new Book
{
Name = input.Name,
Price = input.Price,
IsAvailable = input.IsAvailable
};
await _bookDbContext.Books.AddAsync(book);
await _bookDbContext.SaveChangesAsync();
return book.Id;
}
[HttpPut]
[Route("{id}")]
public async Task UpdateAsync(Guid id, CreateUpdateBookDto input)
{
var book = await _bookDbContext.Books.SingleAsync(b => b.Id == id);
book.Name = input.Name;
book.Price = input.Price;
book.IsAvailable = input.IsAvailable;
await _bookDbContext.SaveChangesAsync();
}
[HttpDelete]
[Route("{id}")]
public async Task DeleteAsync(Guid id)
{
var book = await _bookDbContext.Books.SingleAsync(b => b.Id == id);
_bookDbContext.Books.Remove(book);
await _bookDbContext.SaveChangesAsync();
}
}
}

15
test/AbpPerfTest/AbpPerfTest.WithoutAbp/Dtos/BookDto.cs

@ -0,0 +1,15 @@
using System;
namespace AbpPerfTest.WithoutAbp.Dtos
{
public class BookDto
{
public Guid Id { get; set; }
public string Name { get; set; }
public float Price { get; set; }
public bool IsAvailable { get; set; }
}
}

11
test/AbpPerfTest/AbpPerfTest.WithoutAbp/Dtos/CreateUpdateBookDto.cs

@ -0,0 +1,11 @@
namespace AbpPerfTest.WithoutAbp.Dtos
{
public class CreateUpdateBookDto
{
public string Name { get; set; }
public float Price { get; set; }
public bool IsAvailable { get; set; }
}
}

20
test/AbpPerfTest/AbpPerfTest.WithoutAbp/Entities/Book.cs

@ -0,0 +1,20 @@
using System;
namespace AbpPerfTest.WithoutAbp.Entities
{
public class Book
{
public Guid Id { get; set; }
public string Name { get; set; }
public float Price { get; set; }
public bool IsAvailable { get; set; }
public Book()
{
Id = Guid.NewGuid();
}
}
}

27
test/AbpPerfTest/AbpPerfTest.WithoutAbp/EntityFramework/BookDbContext.cs

@ -0,0 +1,27 @@
using AbpPerfTest.WithoutAbp.Entities;
using Microsoft.EntityFrameworkCore;
namespace AbpPerfTest.WithoutAbp.EntityFramework
{
public class BookDbContext : DbContext
{
public DbSet<Book> Books { get; set; }
public BookDbContext(DbContextOptions<BookDbContext> builderOptions)
: base(builderOptions)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Book>(b =>
{
b.ToTable("Books");
b.Property(x => x.Name).HasMaxLength(128);
});
}
}
}

29
test/AbpPerfTest/AbpPerfTest.WithoutAbp/EntityFramework/BookDbContextFactory.cs

@ -0,0 +1,29 @@
using System.IO;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;
using Microsoft.Extensions.Configuration;
namespace AbpPerfTest.WithoutAbp.EntityFramework
{
public class BookDbContextFactory : IDesignTimeDbContextFactory<BookDbContext>
{
public BookDbContext CreateDbContext(string[] args)
{
var configuration = BuildConfiguration();
var builder = new DbContextOptionsBuilder<BookDbContext>()
.UseSqlServer(configuration.GetConnectionString("Default"));
return new BookDbContext(builder.Options);
}
private static IConfigurationRoot BuildConfiguration()
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false);
return builder.Build();
}
}
}

47
test/AbpPerfTest/AbpPerfTest.WithoutAbp/Migrations/20201222132615_Added_Books.Designer.cs

@ -0,0 +1,47 @@
// <auto-generated />
using System;
using AbpPerfTest.WithoutAbp.EntityFramework;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
namespace AbpPerfTest.WithoutAbp.Migrations
{
[DbContext(typeof(BookDbContext))]
[Migration("20201222132615_Added_Books")]
partial class Added_Books
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.UseIdentityColumns()
.HasAnnotation("Relational:MaxIdentifierLength", 128)
.HasAnnotation("ProductVersion", "5.0.1");
modelBuilder.Entity("AbpPerfTest.WithoutAbp.Entities.Book", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier");
b.Property<bool>("IsAvailable")
.HasColumnType("bit");
b.Property<string>("Name")
.HasMaxLength(128)
.HasColumnType("nvarchar(128)");
b.Property<float>("Price")
.HasColumnType("real");
b.HasKey("Id");
b.ToTable("Books");
});
#pragma warning restore 612, 618
}
}
}

31
test/AbpPerfTest/AbpPerfTest.WithoutAbp/Migrations/20201222132615_Added_Books.cs

@ -0,0 +1,31 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
namespace AbpPerfTest.WithoutAbp.Migrations
{
public partial class Added_Books : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Books",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
Name = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: true),
Price = table.Column<float>(type: "real", nullable: false),
IsAvailable = table.Column<bool>(type: "bit", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Books", x => x.Id);
});
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "Books");
}
}
}

45
test/AbpPerfTest/AbpPerfTest.WithoutAbp/Migrations/BookDbContextModelSnapshot.cs

@ -0,0 +1,45 @@
// <auto-generated />
using System;
using AbpPerfTest.WithoutAbp.EntityFramework;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
namespace AbpPerfTest.WithoutAbp.Migrations
{
[DbContext(typeof(BookDbContext))]
partial class BookDbContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.UseIdentityColumns()
.HasAnnotation("Relational:MaxIdentifierLength", 128)
.HasAnnotation("ProductVersion", "5.0.1");
modelBuilder.Entity("AbpPerfTest.WithoutAbp.Entities.Book", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier");
b.Property<bool>("IsAvailable")
.HasColumnType("bit");
b.Property<string>("Name")
.HasMaxLength(128)
.HasColumnType("nvarchar(128)");
b.Property<float>("Price")
.HasColumnType("real");
b.HasKey("Id");
b.ToTable("Books");
});
#pragma warning restore 612, 618
}
}
}

17
test/AbpPerfTest/AbpPerfTest.WithoutAbp/Program.cs

@ -0,0 +1,17 @@
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
namespace AbpPerfTest.WithoutAbp
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
}
}

28
test/AbpPerfTest/AbpPerfTest.WithoutAbp/Properties/launchSettings.json

@ -0,0 +1,28 @@
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:16268",
"sslPort": 44323
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"AbpPerfTest.WithoutAbp": {
"commandName": "Project",
"dotnetRunMessages": "true",
"launchBrowser": true,
"applicationUrl": "https://localhost:5003;http://localhost:5002",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}

45
test/AbpPerfTest/AbpPerfTest.WithoutAbp/Startup.cs

@ -0,0 +1,45 @@
using AbpPerfTest.WithoutAbp.EntityFramework;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace AbpPerfTest.WithoutAbp
{
public class Startup
{
private readonly IConfiguration _configuration;
public Startup(IConfiguration configuration)
{
_configuration = configuration;
}
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddDbContext<BookDbContext>(options =>
{
options.UseSqlServer(_configuration.GetConnectionString("Default"));
});
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
}

9
test/AbpPerfTest/AbpPerfTest.WithoutAbp/appsettings.Development.json

@ -0,0 +1,9 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
}
}

13
test/AbpPerfTest/AbpPerfTest.WithoutAbp/appsettings.json

@ -0,0 +1,13 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"Default": "Server=(LocalDb)\\MSSQLLocalDB;Database=AbpPerfTest_WithoutAbp;Trusted_Connection=True;MultipleActiveResultSets=true"
}
}

22
test/AbpPerfTest/AbpPerfTest.sln

@ -0,0 +1,22 @@

Microsoft Visual Studio Solution File, Format Version 12.00
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AbpPerfTest.WithoutAbp", "AbpPerfTest.WithoutAbp\AbpPerfTest.WithoutAbp.csproj", "{E3406CA0-9B0C-45FC-A3C0-8179A9C4A3E5}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AbpPerfTest.WithAbp", "AbpPerfTest.WithAbp\AbpPerfTest.WithAbp.csproj", "{13021286-B5D8-4A3E-8F36-5256D32638A7}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{E3406CA0-9B0C-45FC-A3C0-8179A9C4A3E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E3406CA0-9B0C-45FC-A3C0-8179A9C4A3E5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E3406CA0-9B0C-45FC-A3C0-8179A9C4A3E5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E3406CA0-9B0C-45FC-A3C0-8179A9C4A3E5}.Release|Any CPU.Build.0 = Release|Any CPU
{13021286-B5D8-4A3E-8F36-5256D32638A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{13021286-B5D8-4A3E-8F36-5256D32638A7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{13021286-B5D8-4A3E-8F36-5256D32638A7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{13021286-B5D8-4A3E-8F36-5256D32638A7}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal
Loading…
Cancel
Save