mirror of https://github.com/abpframework/abp.git
committed by
GitHub
32 changed files with 941 additions and 0 deletions
@ -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> |
|||
@ -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(); |
|||
} |
|||
} |
|||
} |
|||
@ -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); |
|||
} |
|||
} |
|||
} |
|||
@ -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; } |
|||
} |
|||
} |
|||
@ -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; } |
|||
} |
|||
} |
|||
@ -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(); |
|||
} |
|||
} |
|||
} |
|||
@ -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); |
|||
}); |
|||
} |
|||
} |
|||
} |
|||
@ -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(); |
|||
} |
|||
} |
|||
} |
|||
@ -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
|
|||
} |
|||
} |
|||
} |
|||
@ -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"); |
|||
} |
|||
} |
|||
} |
|||
@ -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
|
|||
} |
|||
} |
|||
} |
|||
@ -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(); |
|||
} |
|||
} |
|||
@ -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" |
|||
} |
|||
} |
|||
} |
|||
} |
|||
@ -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(); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,9 @@ |
|||
{ |
|||
"Logging": { |
|||
"LogLevel": { |
|||
"Default": "Information", |
|||
"Microsoft": "Warning", |
|||
"Microsoft.Hosting.Lifetime": "Information" |
|||
} |
|||
} |
|||
} |
|||
@ -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" |
|||
} |
|||
} |
|||
@ -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> |
|||
@ -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(); |
|||
} |
|||
} |
|||
} |
|||
@ -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; } |
|||
} |
|||
} |
|||
@ -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; } |
|||
} |
|||
} |
|||
@ -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(); |
|||
} |
|||
} |
|||
} |
|||
@ -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); |
|||
}); |
|||
} |
|||
} |
|||
} |
|||
@ -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(); |
|||
} |
|||
} |
|||
} |
|||
@ -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
|
|||
} |
|||
} |
|||
} |
|||
@ -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"); |
|||
} |
|||
} |
|||
} |
|||
@ -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
|
|||
} |
|||
} |
|||
} |
|||
@ -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>(); }); |
|||
} |
|||
} |
|||
@ -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" |
|||
} |
|||
} |
|||
} |
|||
} |
|||
@ -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(); |
|||
}); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,9 @@ |
|||
{ |
|||
"Logging": { |
|||
"LogLevel": { |
|||
"Default": "Information", |
|||
"Microsoft": "Warning", |
|||
"Microsoft.Hosting.Lifetime": "Information" |
|||
} |
|||
} |
|||
} |
|||
@ -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" |
|||
} |
|||
} |
|||
@ -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…
Reference in new issue