diff --git a/EFCore.sln b/EFCore.sln
index cbb769f95d0..fefa3313315 100644
--- a/EFCore.sln
+++ b/EFCore.sln
@@ -131,7 +131,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EFCore.SqlServer.Benchmarks
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EFCore.Sqlite.Benchmarks", "benchmark\EFCore.Sqlite.Benchmarks\EFCore.Sqlite.Benchmarks.csproj", "{5A44F67E-517F-458D-B9C7-12A4DBBAD64A}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EFCore.Benchmarks.SqlServer.EF6", "benchmark\EFCore.SqlServer.EF6.Benchmarks\EFCore.Benchmarks.SqlServer.EF6.csproj", "{678AB38D-B27C-4690-A3F9-2D2488391658}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EF6.SqlServer.Benchmarks", "benchmark\EF6.SqlServer.Benchmarks\EF6.SqlServer.Benchmarks.csproj", "{678AB38D-B27C-4690-A3F9-2D2488391658}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EFCore.Benchmarks", "benchmark\EFCore.Benchmarks\EFCore.Benchmarks.csproj", "{2642F4F0-69BE-4C43-94B7-B298FEC87D89}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EF.Benchmarks.Shared", "benchmark\EF.Benchmarks.Shared\EF.Benchmarks.Shared.csproj", "{BFC26566-4C6D-4904-A559-8FFE09369901}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -355,6 +359,14 @@ Global
{678AB38D-B27C-4690-A3F9-2D2488391658}.Debug|Any CPU.Build.0 = Debug|Any CPU
{678AB38D-B27C-4690-A3F9-2D2488391658}.Release|Any CPU.ActiveCfg = Release|Any CPU
{678AB38D-B27C-4690-A3F9-2D2488391658}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2642F4F0-69BE-4C43-94B7-B298FEC87D89}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2642F4F0-69BE-4C43-94B7-B298FEC87D89}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2642F4F0-69BE-4C43-94B7-B298FEC87D89}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2642F4F0-69BE-4C43-94B7-B298FEC87D89}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BFC26566-4C6D-4904-A559-8FFE09369901}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BFC26566-4C6D-4904-A559-8FFE09369901}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BFC26566-4C6D-4904-A559-8FFE09369901}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BFC26566-4C6D-4904-A559-8FFE09369901}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -414,6 +426,8 @@ Global
{24D7B6D5-A22A-4734-BB55-F464C112F891} = {293B4F79-3CB9-402A-A74C-B8108C41A7CF}
{5A44F67E-517F-458D-B9C7-12A4DBBAD64A} = {293B4F79-3CB9-402A-A74C-B8108C41A7CF}
{678AB38D-B27C-4690-A3F9-2D2488391658} = {293B4F79-3CB9-402A-A74C-B8108C41A7CF}
+ {2642F4F0-69BE-4C43-94B7-B298FEC87D89} = {293B4F79-3CB9-402A-A74C-B8108C41A7CF}
+ {BFC26566-4C6D-4904-A559-8FFE09369901} = {293B4F79-3CB9-402A-A74C-B8108C41A7CF}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {285A5EB4-BCF4-40EB-B9E1-DF6DBCB5E705}
diff --git a/benchmark/EF.Benchmarks.Shared/EF.Benchmarks.Shared.csproj b/benchmark/EF.Benchmarks.Shared/EF.Benchmarks.Shared.csproj
new file mode 100644
index 00000000000..c599a743747
--- /dev/null
+++ b/benchmark/EF.Benchmarks.Shared/EF.Benchmarks.Shared.csproj
@@ -0,0 +1,12 @@
+
+
+
+ net461;netstandard2.0
+ Microsoft.EntityFrameworkCore.Benchmarks
+
+
+
+ true
+
+
+
diff --git a/benchmark/EF.Benchmarks.Shared/EFCoreBenchmarkRunner.cs b/benchmark/EF.Benchmarks.Shared/EFCoreBenchmarkRunner.cs
new file mode 100644
index 00000000000..86170ed5372
--- /dev/null
+++ b/benchmark/EF.Benchmarks.Shared/EFCoreBenchmarkRunner.cs
@@ -0,0 +1,54 @@
+// Copyright (c) .NET Foundation. All rights reserved.
+// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+
+using System;
+using System.Linq;
+using System.Reflection;
+using BenchmarkDotNet.Attributes;
+using BenchmarkDotNet.Columns;
+using BenchmarkDotNet.Configs;
+using BenchmarkDotNet.Diagnosers;
+using BenchmarkDotNet.Exporters;
+using BenchmarkDotNet.Exporters.Csv;
+using BenchmarkDotNet.Horology;
+using BenchmarkDotNet.Reports;
+using BenchmarkDotNet.Running;
+
+namespace Microsoft.EntityFrameworkCore.Benchmarks
+{
+ public static class EFCoreBenchmarkRunner
+ {
+ public static void Run(string[] args, Assembly assembly, IConfig config = null)
+ {
+ if (config == null)
+ {
+ config = DefaultConfig.Instance;
+ }
+
+ config = config.With(DefaultConfig.Instance.GetDiagnosers().Concat(new[] { MemoryDiagnoser.Default }).ToArray());
+
+ var index = Array.FindIndex(args, s => s == "--perflab");
+ if (index >= 0)
+ {
+ var argList = args.ToList();
+ argList.RemoveAt(index);
+ args = argList.ToArray();
+
+ config = config
+ .With(StatisticColumn.OperationsPerSecond, new ParamsSummaryColumn())
+ .With(
+ MarkdownExporter.GitHub, new CsvExporter(
+ CsvSeparator.Comma,
+ new SummaryStyle
+ {
+ PrintUnitsInHeader = true,
+ PrintUnitsInContent = false,
+ TimeUnit = TimeUnit.Microsecond,
+ SizeUnit = SizeUnit.KB
+ }));
+ }
+
+ BenchmarkSwitcher.FromAssembly(assembly).Run(args, config);
+ }
+ }
+}
diff --git a/benchmark/Shared/Initialization/ColdStartSandbox.cs b/benchmark/EF.Benchmarks.Shared/Initialization/ColdStartSandbox.cs
similarity index 100%
rename from benchmark/Shared/Initialization/ColdStartSandbox.cs
rename to benchmark/EF.Benchmarks.Shared/Initialization/ColdStartSandbox.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/Address.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/Address.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/Address.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/Address.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/AddressType.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/AddressType.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/AddressType.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/AddressType.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/BillOfMaterials.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/BillOfMaterials.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/BillOfMaterials.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/BillOfMaterials.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/BusinessEntity.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/BusinessEntity.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/BusinessEntity.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/BusinessEntity.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/BusinessEntityAddress.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/BusinessEntityAddress.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/BusinessEntityAddress.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/BusinessEntityAddress.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/BusinessEntityContact.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/BusinessEntityContact.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/BusinessEntityContact.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/BusinessEntityContact.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/ContactType.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ContactType.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/ContactType.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ContactType.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/CountryRegion.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/CountryRegion.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/CountryRegion.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/CountryRegion.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/CountryRegionCurrency.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/CountryRegionCurrency.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/CountryRegionCurrency.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/CountryRegionCurrency.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/CreditCard.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/CreditCard.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/CreditCard.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/CreditCard.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/Culture.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/Culture.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/Culture.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/Culture.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/Currency.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/Currency.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/Currency.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/Currency.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/CurrencyRate.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/CurrencyRate.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/CurrencyRate.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/CurrencyRate.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/Customer.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/Customer.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/Customer.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/Customer.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/Department.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/Department.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/Department.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/Department.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/EmailAddress.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/EmailAddress.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/EmailAddress.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/EmailAddress.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/Employee.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/Employee.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/Employee.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/Employee.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/EmployeeDepartmentHistory.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/EmployeeDepartmentHistory.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/EmployeeDepartmentHistory.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/EmployeeDepartmentHistory.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/EmployeePayHistory.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/EmployeePayHistory.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/EmployeePayHistory.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/EmployeePayHistory.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/Illustration.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/Illustration.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/Illustration.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/Illustration.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/JobCandidate.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/JobCandidate.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/JobCandidate.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/JobCandidate.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/Location.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/Location.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/Location.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/Location.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/Password.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/Password.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/Password.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/Password.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/Person.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/Person.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/Person.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/Person.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/PersonCreditCard.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/PersonCreditCard.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/PersonCreditCard.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/PersonCreditCard.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/PersonPhone.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/PersonPhone.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/PersonPhone.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/PersonPhone.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/PhoneNumberType.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/PhoneNumberType.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/PhoneNumberType.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/PhoneNumberType.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/Product.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/Product.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/Product.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/Product.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/ProductCategory.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ProductCategory.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/ProductCategory.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ProductCategory.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/ProductCostHistory.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ProductCostHistory.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/ProductCostHistory.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ProductCostHistory.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/ProductDescription.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ProductDescription.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/ProductDescription.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ProductDescription.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/ProductDocument.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ProductDocument.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/ProductDocument.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ProductDocument.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/ProductInventory.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ProductInventory.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/ProductInventory.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ProductInventory.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/ProductListPriceHistory.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ProductListPriceHistory.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/ProductListPriceHistory.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ProductListPriceHistory.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/ProductModel.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ProductModel.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/ProductModel.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ProductModel.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/ProductModelIllustration.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ProductModelIllustration.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/ProductModelIllustration.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ProductModelIllustration.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/ProductModelProductDescriptionCulture.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ProductModelProductDescriptionCulture.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/ProductModelProductDescriptionCulture.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ProductModelProductDescriptionCulture.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/ProductPhoto.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ProductPhoto.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/ProductPhoto.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ProductPhoto.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/ProductProductPhoto.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ProductProductPhoto.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/ProductProductPhoto.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ProductProductPhoto.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/ProductReview.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ProductReview.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/ProductReview.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ProductReview.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/ProductSubcategory.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ProductSubcategory.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/ProductSubcategory.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ProductSubcategory.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/ProductVendor.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ProductVendor.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/ProductVendor.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ProductVendor.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/PurchaseOrderDetail.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/PurchaseOrderDetail.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/PurchaseOrderDetail.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/PurchaseOrderDetail.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/PurchaseOrderHeader.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/PurchaseOrderHeader.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/PurchaseOrderHeader.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/PurchaseOrderHeader.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/SalesOrderDetail.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/SalesOrderDetail.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/SalesOrderDetail.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/SalesOrderDetail.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/SalesOrderHeader.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/SalesOrderHeader.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/SalesOrderHeader.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/SalesOrderHeader.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/SalesOrderHeaderSalesReason.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/SalesOrderHeaderSalesReason.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/SalesOrderHeaderSalesReason.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/SalesOrderHeaderSalesReason.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/SalesPerson.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/SalesPerson.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/SalesPerson.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/SalesPerson.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/SalesPersonQuotaHistory.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/SalesPersonQuotaHistory.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/SalesPersonQuotaHistory.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/SalesPersonQuotaHistory.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/SalesReason.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/SalesReason.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/SalesReason.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/SalesReason.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/SalesTaxRate.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/SalesTaxRate.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/SalesTaxRate.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/SalesTaxRate.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/SalesTerritory.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/SalesTerritory.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/SalesTerritory.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/SalesTerritory.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/SalesTerritoryHistory.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/SalesTerritoryHistory.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/SalesTerritoryHistory.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/SalesTerritoryHistory.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/ScrapReason.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ScrapReason.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/ScrapReason.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ScrapReason.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/Shift.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/Shift.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/Shift.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/Shift.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/ShipMethod.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ShipMethod.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/ShipMethod.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ShipMethod.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/ShoppingCartItem.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ShoppingCartItem.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/ShoppingCartItem.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/ShoppingCartItem.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/SpecialOffer.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/SpecialOffer.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/SpecialOffer.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/SpecialOffer.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/SpecialOfferProduct.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/SpecialOfferProduct.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/SpecialOfferProduct.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/SpecialOfferProduct.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/StateProvince.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/StateProvince.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/StateProvince.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/StateProvince.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/Store.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/Store.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/Store.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/Store.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/TransactionHistory.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/TransactionHistory.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/TransactionHistory.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/TransactionHistory.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/TransactionHistoryArchive.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/TransactionHistoryArchive.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/TransactionHistoryArchive.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/TransactionHistoryArchive.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/UnitMeasure.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/UnitMeasure.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/UnitMeasure.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/UnitMeasure.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/Vendor.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/Vendor.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/Vendor.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/Vendor.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/WorkOrder.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/WorkOrder.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/WorkOrder.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/WorkOrder.cs
diff --git a/benchmark/Shared/Models/AdventureWorks/WorkOrderRouting.cs b/benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/WorkOrderRouting.cs
similarity index 100%
rename from benchmark/Shared/Models/AdventureWorks/WorkOrderRouting.cs
rename to benchmark/EF.Benchmarks.Shared/Models/AdventureWorks/WorkOrderRouting.cs
diff --git a/benchmark/Shared/Models/Orders/Customer.cs b/benchmark/EF.Benchmarks.Shared/Models/Orders/Customer.cs
similarity index 100%
rename from benchmark/Shared/Models/Orders/Customer.cs
rename to benchmark/EF.Benchmarks.Shared/Models/Orders/Customer.cs
diff --git a/benchmark/Shared/Models/Orders/Order.cs b/benchmark/EF.Benchmarks.Shared/Models/Orders/Order.cs
similarity index 100%
rename from benchmark/Shared/Models/Orders/Order.cs
rename to benchmark/EF.Benchmarks.Shared/Models/Orders/Order.cs
diff --git a/benchmark/Shared/Models/Orders/OrderLine.cs b/benchmark/EF.Benchmarks.Shared/Models/Orders/OrderLine.cs
similarity index 100%
rename from benchmark/Shared/Models/Orders/OrderLine.cs
rename to benchmark/EF.Benchmarks.Shared/Models/Orders/OrderLine.cs
diff --git a/benchmark/Shared/Models/Orders/OrdersFixtureSeedBase.cs b/benchmark/EF.Benchmarks.Shared/Models/Orders/OrdersFixtureSeedBase.cs
similarity index 100%
rename from benchmark/Shared/Models/Orders/OrdersFixtureSeedBase.cs
rename to benchmark/EF.Benchmarks.Shared/Models/Orders/OrdersFixtureSeedBase.cs
diff --git a/benchmark/Shared/Models/Orders/Product.cs b/benchmark/EF.Benchmarks.Shared/Models/Orders/Product.cs
similarity index 100%
rename from benchmark/Shared/Models/Orders/Product.cs
rename to benchmark/EF.Benchmarks.Shared/Models/Orders/Product.cs
diff --git a/benchmark/Shared/ParamsSummaryColumn.cs b/benchmark/EF.Benchmarks.Shared/ParamsSummaryColumn.cs
similarity index 100%
rename from benchmark/Shared/ParamsSummaryColumn.cs
rename to benchmark/EF.Benchmarks.Shared/ParamsSummaryColumn.cs
diff --git a/benchmark/EFCore.SqlServer.EF6.Benchmarks/ChangeTracker/DbSetOperationTests.cs b/benchmark/EF6.SqlServer.Benchmarks/ChangeTracker/DbSetOperationTests.cs
similarity index 100%
rename from benchmark/EFCore.SqlServer.EF6.Benchmarks/ChangeTracker/DbSetOperationTests.cs
rename to benchmark/EF6.SqlServer.Benchmarks/ChangeTracker/DbSetOperationTests.cs
diff --git a/benchmark/EFCore.SqlServer.EF6.Benchmarks/ChangeTracker/FixupTests.cs b/benchmark/EF6.SqlServer.Benchmarks/ChangeTracker/FixupTests.cs
similarity index 100%
rename from benchmark/EFCore.SqlServer.EF6.Benchmarks/ChangeTracker/FixupTests.cs
rename to benchmark/EF6.SqlServer.Benchmarks/ChangeTracker/FixupTests.cs
diff --git a/benchmark/EFCore.SqlServer.EF6.Benchmarks/ChangeTracker/SingleRunJobAttribute.cs b/benchmark/EF6.SqlServer.Benchmarks/ChangeTracker/SingleRunJobAttribute.cs
similarity index 100%
rename from benchmark/EFCore.SqlServer.EF6.Benchmarks/ChangeTracker/SingleRunJobAttribute.cs
rename to benchmark/EF6.SqlServer.Benchmarks/ChangeTracker/SingleRunJobAttribute.cs
diff --git a/benchmark/EFCore.SqlServer.EF6.Benchmarks/EFCore.Benchmarks.SqlServer.EF6.csproj b/benchmark/EF6.SqlServer.Benchmarks/EF6.SqlServer.Benchmarks.csproj
similarity index 86%
rename from benchmark/EFCore.SqlServer.EF6.Benchmarks/EFCore.Benchmarks.SqlServer.EF6.csproj
rename to benchmark/EF6.SqlServer.Benchmarks/EF6.SqlServer.Benchmarks.csproj
index a7c7d6f8868..012a4e6386a 100644
--- a/benchmark/EFCore.SqlServer.EF6.Benchmarks/EFCore.Benchmarks.SqlServer.EF6.csproj
+++ b/benchmark/EF6.SqlServer.Benchmarks/EF6.SqlServer.Benchmarks.csproj
@@ -18,7 +18,7 @@
-
+
diff --git a/benchmark/EFCore.SqlServer.EF6.Benchmarks/Initialization/InitializationTests.cs b/benchmark/EF6.SqlServer.Benchmarks/Initialization/InitializationTests.cs
similarity index 100%
rename from benchmark/EFCore.SqlServer.EF6.Benchmarks/Initialization/InitializationTests.cs
rename to benchmark/EF6.SqlServer.Benchmarks/Initialization/InitializationTests.cs
diff --git a/benchmark/EFCore.SqlServer.EF6.Benchmarks/Models/AdventureWorks/AdventureWorksContext.cs b/benchmark/EF6.SqlServer.Benchmarks/Models/AdventureWorks/AdventureWorksContext.cs
similarity index 100%
rename from benchmark/EFCore.SqlServer.EF6.Benchmarks/Models/AdventureWorks/AdventureWorksContext.cs
rename to benchmark/EF6.SqlServer.Benchmarks/Models/AdventureWorks/AdventureWorksContext.cs
diff --git a/benchmark/EFCore.SqlServer.EF6.Benchmarks/Models/AdventureWorks/AdventureWorksFixture.cs b/benchmark/EF6.SqlServer.Benchmarks/Models/AdventureWorks/AdventureWorksFixture.cs
similarity index 74%
rename from benchmark/EFCore.SqlServer.EF6.Benchmarks/Models/AdventureWorks/AdventureWorksFixture.cs
rename to benchmark/EF6.SqlServer.Benchmarks/Models/AdventureWorks/AdventureWorksFixture.cs
index 00470b4e390..8b5fbe52c4e 100644
--- a/benchmark/EFCore.SqlServer.EF6.Benchmarks/Models/AdventureWorks/AdventureWorksFixture.cs
+++ b/benchmark/EF6.SqlServer.Benchmarks/Models/AdventureWorks/AdventureWorksFixture.cs
@@ -1,11 +1,13 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+using Microsoft.EntityFrameworkCore.Benchmarks;
+
namespace Microsoft.EntityFrameworkCore.Benchmarks.Models.AdventureWorks
{
public static class AdventureWorksFixture
{
- public static string ConnectionString { get; } = $"{BenchmarkEnvironment.Instance.BenchmarkDatabase}Database=AdventureWorks2014;";
+ public static readonly string ConnectionString = SqlServerBenchmarkEnvironment.CreateConnectionString("AdventureWorks2014");
// This method is called from timed code, be careful when changing it
public static AdventureWorksContext CreateContext()
diff --git a/benchmark/EFCore.SqlServer.EF6.Benchmarks/Models/Orders/OrdersContext.cs b/benchmark/EF6.SqlServer.Benchmarks/Models/Orders/OrdersContext.cs
similarity index 100%
rename from benchmark/EFCore.SqlServer.EF6.Benchmarks/Models/Orders/OrdersContext.cs
rename to benchmark/EF6.SqlServer.Benchmarks/Models/Orders/OrdersContext.cs
diff --git a/benchmark/EFCore.SqlServer.EF6.Benchmarks/Models/Orders/OrdersFixture.cs b/benchmark/EF6.SqlServer.Benchmarks/Models/Orders/OrdersFixture.cs
similarity index 96%
rename from benchmark/EFCore.SqlServer.EF6.Benchmarks/Models/Orders/OrdersFixture.cs
rename to benchmark/EF6.SqlServer.Benchmarks/Models/Orders/OrdersFixture.cs
index ced9752ca12..bbb54b0656c 100644
--- a/benchmark/EFCore.SqlServer.EF6.Benchmarks/Models/Orders/OrdersFixture.cs
+++ b/benchmark/EF6.SqlServer.Benchmarks/Models/Orders/OrdersFixture.cs
@@ -19,7 +19,7 @@ public class OrdersFixture : OrdersFixtureSeedBase
public OrdersFixture(string databaseName, int productCount, int customerCount,
int ordersPerCustomer, int linesPerOrder, Action seedAction = null)
{
- _connectionString = $"{BenchmarkEnvironment.Instance.BenchmarkDatabase}Database={databaseName};";
+ _connectionString = SqlServerBenchmarkEnvironment.CreateConnectionString(databaseName);
_productCount = productCount;
_customerCount = customerCount;
_ordersPerCustomer = ordersPerCustomer;
diff --git a/benchmark/EFCore.SqlServer.EF6.Benchmarks/Query/FuncletizationTests.cs b/benchmark/EF6.SqlServer.Benchmarks/Query/FuncletizationTests.cs
similarity index 100%
rename from benchmark/EFCore.SqlServer.EF6.Benchmarks/Query/FuncletizationTests.cs
rename to benchmark/EF6.SqlServer.Benchmarks/Query/FuncletizationTests.cs
diff --git a/benchmark/EFCore.SqlServer.EF6.Benchmarks/Query/NavigationsQueryTests.cs b/benchmark/EF6.SqlServer.Benchmarks/Query/NavigationsQueryTests.cs
similarity index 100%
rename from benchmark/EFCore.SqlServer.EF6.Benchmarks/Query/NavigationsQueryTests.cs
rename to benchmark/EF6.SqlServer.Benchmarks/Query/NavigationsQueryTests.cs
diff --git a/benchmark/EFCore.SqlServer.EF6.Benchmarks/Query/QueryCompilationTests.cs b/benchmark/EF6.SqlServer.Benchmarks/Query/QueryCompilationTests.cs
similarity index 100%
rename from benchmark/EFCore.SqlServer.EF6.Benchmarks/Query/QueryCompilationTests.cs
rename to benchmark/EF6.SqlServer.Benchmarks/Query/QueryCompilationTests.cs
diff --git a/benchmark/EFCore.SqlServer.EF6.Benchmarks/Query/RawSqlQueryTests.cs b/benchmark/EF6.SqlServer.Benchmarks/Query/RawSqlQueryTests.cs
similarity index 100%
rename from benchmark/EFCore.SqlServer.EF6.Benchmarks/Query/RawSqlQueryTests.cs
rename to benchmark/EF6.SqlServer.Benchmarks/Query/RawSqlQueryTests.cs
diff --git a/benchmark/EFCore.SqlServer.EF6.Benchmarks/Query/SimpleQueryTests.cs b/benchmark/EF6.SqlServer.Benchmarks/Query/SimpleQueryTests.cs
similarity index 100%
rename from benchmark/EFCore.SqlServer.EF6.Benchmarks/Query/SimpleQueryTests.cs
rename to benchmark/EF6.SqlServer.Benchmarks/Query/SimpleQueryTests.cs
diff --git a/benchmark/EFCore.SqlServer.EF6.Benchmarks/Extensions.cs b/benchmark/EF6.SqlServer.Benchmarks/Support/Extensions.cs
similarity index 97%
rename from benchmark/EFCore.SqlServer.EF6.Benchmarks/Extensions.cs
rename to benchmark/EF6.SqlServer.Benchmarks/Support/Extensions.cs
index 47d8e687d87..726299d40a6 100644
--- a/benchmark/EFCore.SqlServer.EF6.Benchmarks/Extensions.cs
+++ b/benchmark/EF6.SqlServer.Benchmarks/Support/Extensions.cs
@@ -10,6 +10,7 @@
// ReSharper disable PossibleNullReferenceException
+// ReSharper disable once CheckNamespace
namespace Microsoft.EntityFrameworkCore.Benchmarks
{
public static class Extensions
diff --git a/benchmark/EF6.SqlServer.Benchmarks/Support/Program.cs b/benchmark/EF6.SqlServer.Benchmarks/Support/Program.cs
new file mode 100644
index 00000000000..6c209d3444c
--- /dev/null
+++ b/benchmark/EF6.SqlServer.Benchmarks/Support/Program.cs
@@ -0,0 +1,23 @@
+// Copyright (c) .NET Foundation. All rights reserved.
+// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+
+using System;
+using System.Linq;
+using BenchmarkDotNet.Attributes;
+using BenchmarkDotNet.Columns;
+using BenchmarkDotNet.Configs;
+using BenchmarkDotNet.Diagnosers;
+using BenchmarkDotNet.Exporters;
+using BenchmarkDotNet.Exporters.Csv;
+using BenchmarkDotNet.Horology;
+using BenchmarkDotNet.Reports;
+using BenchmarkDotNet.Running;
+
+// ReSharper disable once CheckNamespace
+namespace Microsoft.EntityFrameworkCore.Benchmarks
+{
+ public class Program
+ {
+ private static void Main(string[] args) => EFCoreBenchmarkRunner.Run(args, typeof(Program).Assembly);
+ }
+}
diff --git a/benchmark/EF6.SqlServer.Benchmarks/Support/SqlServerBenchmarkEnvironment.cs b/benchmark/EF6.SqlServer.Benchmarks/Support/SqlServerBenchmarkEnvironment.cs
new file mode 100644
index 00000000000..191dfb4f5b0
--- /dev/null
+++ b/benchmark/EF6.SqlServer.Benchmarks/Support/SqlServerBenchmarkEnvironment.cs
@@ -0,0 +1,34 @@
+// Copyright (c) .NET Foundation. All rights reserved.
+// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+
+using System.IO;
+using System.Data.SqlClient;
+using Microsoft.Extensions.Configuration;
+
+// ReSharper disable once CheckNamespace
+namespace Microsoft.EntityFrameworkCore.Benchmarks
+{
+ public static class SqlServerBenchmarkEnvironment
+ {
+ public static IConfiguration Config { get; }
+
+ static SqlServerBenchmarkEnvironment()
+ {
+ var configBuilder = new ConfigurationBuilder()
+ .SetBasePath(Directory.GetCurrentDirectory())
+ .AddJsonFile("config.json", optional: true)
+ .AddEnvironmentVariables();
+
+ Config = configBuilder.Build()
+ .GetSection("Test:SqlServer");
+ }
+
+ private const string DefaultConnectionString
+ = "Data Source=(localdb)\\MSSQLLocalDB;Database=master;Integrated Security=True;Connect Timeout=30;ConnectRetryCount=0";
+
+ public static string DefaultConnection => Config["DefaultConnection"] ?? DefaultConnectionString;
+
+ public static string CreateConnectionString(string name, string fileName = null, bool? multipleActiveResultSets = null)
+ => new SqlConnectionStringBuilder(DefaultConnection) { InitialCatalog = name }.ToString();
+ }
+}
diff --git a/benchmark/EFCore.SqlServer.EF6.Benchmarks/UpdatePipeline/SimpleUpdatePipelineTests.cs b/benchmark/EF6.SqlServer.Benchmarks/UpdatePipeline/SimpleUpdatePipelineTests.cs
similarity index 100%
rename from benchmark/EFCore.SqlServer.EF6.Benchmarks/UpdatePipeline/SimpleUpdatePipelineTests.cs
rename to benchmark/EF6.SqlServer.Benchmarks/UpdatePipeline/SimpleUpdatePipelineTests.cs
diff --git a/benchmark/EF6.SqlServer.Benchmarks/config.json b/benchmark/EF6.SqlServer.Benchmarks/config.json
new file mode 100644
index 00000000000..7e2647178f4
--- /dev/null
+++ b/benchmark/EF6.SqlServer.Benchmarks/config.json
@@ -0,0 +1,5 @@
+{
+ "benchmarks": {
+ "benchmarkDatabase": "Server=(localdb)\\mssqllocaldb;Trusted_Connection=True;MultipleActiveResultSets=true;"
+ }
+}
diff --git a/benchmark/Shared.EFCore/ChangeTracker/DbSetOperationTests.cs b/benchmark/EFCore.Benchmarks/ChangeTracker/DbSetOperationTests.cs
similarity index 100%
rename from benchmark/Shared.EFCore/ChangeTracker/DbSetOperationTests.cs
rename to benchmark/EFCore.Benchmarks/ChangeTracker/DbSetOperationTests.cs
diff --git a/benchmark/Shared.EFCore/ChangeTracker/FixupTests.cs b/benchmark/EFCore.Benchmarks/ChangeTracker/FixupTests.cs
similarity index 100%
rename from benchmark/Shared.EFCore/ChangeTracker/FixupTests.cs
rename to benchmark/EFCore.Benchmarks/ChangeTracker/FixupTests.cs
diff --git a/benchmark/EFCore.Benchmarks/EFCore.Benchmarks.csproj b/benchmark/EFCore.Benchmarks/EFCore.Benchmarks.csproj
new file mode 100644
index 00000000000..7ff94a891f0
--- /dev/null
+++ b/benchmark/EFCore.Benchmarks/EFCore.Benchmarks.csproj
@@ -0,0 +1,37 @@
+
+
+
+ net461;netcoreapp2.0;netcoreapp2.1;netcoreapp2.2;netcoreapp3.0
+ netcoreapp3.0
+ Microsoft.EntityFrameworkCore.Benchmarks
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(DefineConstants);OLD_FROM_SQL
+
+
+
diff --git a/benchmark/Shared.EFCore/Extensions/Extensions.cs b/benchmark/EFCore.Benchmarks/Extensions/Extensions.cs
similarity index 100%
rename from benchmark/Shared.EFCore/Extensions/Extensions.cs
rename to benchmark/EFCore.Benchmarks/Extensions/Extensions.cs
diff --git a/benchmark/Shared.EFCore/Initialization/ColdStartEnabledTests.cs b/benchmark/EFCore.Benchmarks/Initialization/ColdStartEnabledTests.cs
similarity index 100%
rename from benchmark/Shared.EFCore/Initialization/ColdStartEnabledTests.cs
rename to benchmark/EFCore.Benchmarks/Initialization/ColdStartEnabledTests.cs
diff --git a/benchmark/Shared.EFCore/Initialization/InitializationTests.cs b/benchmark/EFCore.Benchmarks/Initialization/InitializationTests.cs
similarity index 100%
rename from benchmark/Shared.EFCore/Initialization/InitializationTests.cs
rename to benchmark/EFCore.Benchmarks/Initialization/InitializationTests.cs
diff --git a/benchmark/Shared.EFCore/Models/AdventureWorks/AdventureWorksContextBase.cs b/benchmark/EFCore.Benchmarks/Models/AdventureWorks/AdventureWorksContextBase.cs
similarity index 100%
rename from benchmark/Shared.EFCore/Models/AdventureWorks/AdventureWorksContextBase.cs
rename to benchmark/EFCore.Benchmarks/Models/AdventureWorks/AdventureWorksContextBase.cs
diff --git a/benchmark/Shared.EFCore/Models/Orders/OrdersContextBase.cs b/benchmark/EFCore.Benchmarks/Models/Orders/OrdersContextBase.cs
similarity index 100%
rename from benchmark/Shared.EFCore/Models/Orders/OrdersContextBase.cs
rename to benchmark/EFCore.Benchmarks/Models/Orders/OrdersContextBase.cs
diff --git a/benchmark/Shared.EFCore/Models/Orders/OrdersFixtureBase.cs b/benchmark/EFCore.Benchmarks/Models/Orders/OrdersFixtureBase.cs
similarity index 100%
rename from benchmark/Shared.EFCore/Models/Orders/OrdersFixtureBase.cs
rename to benchmark/EFCore.Benchmarks/Models/Orders/OrdersFixtureBase.cs
diff --git a/benchmark/Shared.EFCore/Query/FuncletizationTests.cs b/benchmark/EFCore.Benchmarks/Query/FuncletizationTests.cs
similarity index 100%
rename from benchmark/Shared.EFCore/Query/FuncletizationTests.cs
rename to benchmark/EFCore.Benchmarks/Query/FuncletizationTests.cs
diff --git a/benchmark/Shared.EFCore/Query/NavigationsQueryTests.cs b/benchmark/EFCore.Benchmarks/Query/NavigationsQueryTests.cs
similarity index 100%
rename from benchmark/Shared.EFCore/Query/NavigationsQueryTests.cs
rename to benchmark/EFCore.Benchmarks/Query/NavigationsQueryTests.cs
diff --git a/benchmark/Shared.EFCore/Query/QueryCompilationTests.cs b/benchmark/EFCore.Benchmarks/Query/QueryCompilationTests.cs
similarity index 100%
rename from benchmark/Shared.EFCore/Query/QueryCompilationTests.cs
rename to benchmark/EFCore.Benchmarks/Query/QueryCompilationTests.cs
diff --git a/benchmark/Shared.EFCore/Query/RawSqlQueryTests.cs b/benchmark/EFCore.Benchmarks/Query/RawSqlQueryTests.cs
similarity index 100%
rename from benchmark/Shared.EFCore/Query/RawSqlQueryTests.cs
rename to benchmark/EFCore.Benchmarks/Query/RawSqlQueryTests.cs
diff --git a/benchmark/Shared.EFCore/Query/SimpleQueryTests.cs b/benchmark/EFCore.Benchmarks/Query/SimpleQueryTests.cs
similarity index 100%
rename from benchmark/Shared.EFCore/Query/SimpleQueryTests.cs
rename to benchmark/EFCore.Benchmarks/Query/SimpleQueryTests.cs
diff --git a/benchmark/Shared.EFCore/UpdatePipeline/SimpleUpdatePipelineTests.cs b/benchmark/EFCore.Benchmarks/UpdatePipeline/SimpleUpdatePipelineTests.cs
similarity index 100%
rename from benchmark/Shared.EFCore/UpdatePipeline/SimpleUpdatePipelineTests.cs
rename to benchmark/EFCore.Benchmarks/UpdatePipeline/SimpleUpdatePipelineTests.cs
diff --git a/benchmark/EFCore.SqlServer.Benchmarks/ChangeTracker/DbSetOperationSqlServerTests.cs b/benchmark/EFCore.SqlServer.Benchmarks/ChangeTracker/DbSetOperationSqlServerTests.cs
index 1de3edd193f..80ed8ff19fd 100644
--- a/benchmark/EFCore.SqlServer.Benchmarks/ChangeTracker/DbSetOperationSqlServerTests.cs
+++ b/benchmark/EFCore.SqlServer.Benchmarks/ChangeTracker/DbSetOperationSqlServerTests.cs
@@ -13,7 +13,7 @@ public class AddDataVariations : AddDataVariationsBase
{
public override OrdersFixtureBase CreateFixture()
{
- return new OrdersFixture("Perf_ChangeTracker_DbSetOperation");
+ return new OrdersSqlServerFixture("Perf_ChangeTracker_DbSetOperation");
}
}
@@ -21,7 +21,7 @@ public class ExistingDataVariations : ExistingDataVariationsBase
{
public override OrdersFixtureBase CreateFixture()
{
- return new OrdersFixture("Perf_ChangeTracker_DbSetOperation");
+ return new OrdersSqlServerFixture("Perf_ChangeTracker_DbSetOperation");
}
}
}
diff --git a/benchmark/EFCore.SqlServer.Benchmarks/ChangeTracker/FixupSqlServerTests.cs b/benchmark/EFCore.SqlServer.Benchmarks/ChangeTracker/FixupSqlServerTests.cs
index 24a1a05f4d8..16fce3f6389 100644
--- a/benchmark/EFCore.SqlServer.Benchmarks/ChangeTracker/FixupSqlServerTests.cs
+++ b/benchmark/EFCore.SqlServer.Benchmarks/ChangeTracker/FixupSqlServerTests.cs
@@ -13,7 +13,7 @@ public class ChildVariations : ChildVariationsBase
{
public override OrdersFixtureBase CreateFixture()
{
- return new OrdersFixture("Perf_ChangeTracker_Fixup");
+ return new OrdersSqlServerFixture("Perf_ChangeTracker_Fixup");
}
}
@@ -21,7 +21,7 @@ public class ParentVariations : ParentVariationsBase
{
public override OrdersFixtureBase CreateFixture()
{
- return new OrdersFixture("Perf_ChangeTracker_Fixup");
+ return new OrdersSqlServerFixture("Perf_ChangeTracker_Fixup");
}
}
}
diff --git a/benchmark/EFCore.SqlServer.Benchmarks/EFCore.SqlServer.Benchmarks.csproj b/benchmark/EFCore.SqlServer.Benchmarks/EFCore.SqlServer.Benchmarks.csproj
index b008823956b..e620e723388 100644
--- a/benchmark/EFCore.SqlServer.Benchmarks/EFCore.SqlServer.Benchmarks.csproj
+++ b/benchmark/EFCore.SqlServer.Benchmarks/EFCore.SqlServer.Benchmarks.csproj
@@ -15,22 +15,18 @@
-
+
-
+
-
+
-
- $(DefineConstants);OLD_FROM_SQL
-
-
PreserveNewest
@@ -39,8 +35,7 @@
-
-
+
diff --git a/benchmark/EFCore.SqlServer.Benchmarks/Initialization/ColdStartEnabledSqlServerTest.cs b/benchmark/EFCore.SqlServer.Benchmarks/Initialization/ColdStartEnabledSqlServerTest.cs
index 0b9cb3fc67c..512fba6759e 100644
--- a/benchmark/EFCore.SqlServer.Benchmarks/Initialization/ColdStartEnabledSqlServerTest.cs
+++ b/benchmark/EFCore.SqlServer.Benchmarks/Initialization/ColdStartEnabledSqlServerTest.cs
@@ -9,7 +9,7 @@ public class ColdStartEnabledSqlServerTest : ColdStartEnabledTests
{
protected override AdventureWorksContextBase CreateContext()
{
- return AdventureWorksFixture.CreateContext();
+ return AdventureWorksSqlServerFixture.CreateContext();
}
}
}
diff --git a/benchmark/EFCore.SqlServer.Benchmarks/Models/AdventureWorks/AdventureWorksContext.cs b/benchmark/EFCore.SqlServer.Benchmarks/Models/AdventureWorks/AdventureWorksSqlServerContext.cs
similarity index 78%
rename from benchmark/EFCore.SqlServer.Benchmarks/Models/AdventureWorks/AdventureWorksContext.cs
rename to benchmark/EFCore.SqlServer.Benchmarks/Models/AdventureWorks/AdventureWorksSqlServerContext.cs
index 22460b367ef..ed6b3f55a86 100644
--- a/benchmark/EFCore.SqlServer.Benchmarks/Models/AdventureWorks/AdventureWorksContext.cs
+++ b/benchmark/EFCore.SqlServer.Benchmarks/Models/AdventureWorks/AdventureWorksSqlServerContext.cs
@@ -4,11 +4,11 @@
namespace Microsoft.EntityFrameworkCore.Benchmarks.Models.AdventureWorks
{
- public class AdventureWorksContext : AdventureWorksContextBase
+ public class AdventureWorksSqlServerContext : AdventureWorksContextBase
{
private readonly string _connectionString;
- public AdventureWorksContext(string connectionString)
+ public AdventureWorksSqlServerContext(string connectionString)
{
_connectionString = connectionString;
}
diff --git a/benchmark/EFCore.SqlServer.Benchmarks/Models/AdventureWorks/AdventureWorksFixture.cs b/benchmark/EFCore.SqlServer.Benchmarks/Models/AdventureWorks/AdventureWorksSqlServerFixture.cs
similarity index 61%
rename from benchmark/EFCore.SqlServer.Benchmarks/Models/AdventureWorks/AdventureWorksFixture.cs
rename to benchmark/EFCore.SqlServer.Benchmarks/Models/AdventureWorks/AdventureWorksSqlServerFixture.cs
index 66e00eb9d4e..4211b399a86 100644
--- a/benchmark/EFCore.SqlServer.Benchmarks/Models/AdventureWorks/AdventureWorksFixture.cs
+++ b/benchmark/EFCore.SqlServer.Benchmarks/Models/AdventureWorks/AdventureWorksSqlServerFixture.cs
@@ -3,14 +3,14 @@
namespace Microsoft.EntityFrameworkCore.Benchmarks.Models.AdventureWorks
{
- public static class AdventureWorksFixture
+ public static class AdventureWorksSqlServerFixture
{
- private static readonly string _connectionString = $"{BenchmarkEnvironment.Instance.BenchmarkDatabase}Database=AdventureWorks2014;";
+ private static readonly string _connectionString = SqlServerBenchmarkEnvironment.CreateConnectionString("AdventureWorks2014");
// This method is called from timed code, be careful when changing it
public static AdventureWorksContextBase CreateContext()
{
- return new AdventureWorksContext(_connectionString);
+ return new AdventureWorksSqlServerContext(_connectionString);
}
}
}
diff --git a/benchmark/EFCore.SqlServer.Benchmarks/Models/Orders/OrdersContext.cs b/benchmark/EFCore.SqlServer.Benchmarks/Models/Orders/OrdersSqlServerContext.cs
similarity index 79%
rename from benchmark/EFCore.SqlServer.Benchmarks/Models/Orders/OrdersContext.cs
rename to benchmark/EFCore.SqlServer.Benchmarks/Models/Orders/OrdersSqlServerContext.cs
index 38c39237768..2698f9ae038 100644
--- a/benchmark/EFCore.SqlServer.Benchmarks/Models/Orders/OrdersContext.cs
+++ b/benchmark/EFCore.SqlServer.Benchmarks/Models/Orders/OrdersSqlServerContext.cs
@@ -6,12 +6,12 @@
namespace Microsoft.EntityFrameworkCore.Benchmarks.Models.Orders
{
- public class OrdersContext : OrdersContextBase
+ public class OrdersSqlServerContext : OrdersContextBase
{
private readonly string _connectionString;
private readonly bool _disableBatching;
- public OrdersContext(string connectionString, IServiceProvider serviceProvider = null, bool disableBatching = false)
+ public OrdersSqlServerContext(string connectionString, IServiceProvider serviceProvider = null, bool disableBatching = false)
: base(serviceProvider)
{
_connectionString = connectionString;
diff --git a/benchmark/EFCore.SqlServer.Benchmarks/Models/Orders/OrdersFixture.cs b/benchmark/EFCore.SqlServer.Benchmarks/Models/Orders/OrdersSqlServerFixture.cs
similarity index 60%
rename from benchmark/EFCore.SqlServer.Benchmarks/Models/Orders/OrdersFixture.cs
rename to benchmark/EFCore.SqlServer.Benchmarks/Models/Orders/OrdersSqlServerFixture.cs
index 13436a04847..38b5b8c24cc 100644
--- a/benchmark/EFCore.SqlServer.Benchmarks/Models/Orders/OrdersFixture.cs
+++ b/benchmark/EFCore.SqlServer.Benchmarks/Models/Orders/OrdersSqlServerFixture.cs
@@ -5,18 +5,18 @@
namespace Microsoft.EntityFrameworkCore.Benchmarks.Models.Orders
{
- public class OrdersFixture : OrdersFixtureBase
+ public class OrdersSqlServerFixture : OrdersFixtureBase
{
private readonly string _connectionString;
- public OrdersFixture(string databaseName)
+ public OrdersSqlServerFixture(string databaseName)
{
- _connectionString = $@"{BenchmarkEnvironment.Instance.BenchmarkDatabase}Database={databaseName};";
+ _connectionString = SqlServerBenchmarkEnvironment.CreateConnectionString(databaseName);
}
public override OrdersContextBase CreateContext(IServiceProvider serviceProvider = null, bool disableBatching = false)
{
- return new OrdersContext(_connectionString, serviceProvider, disableBatching);
+ return new OrdersSqlServerContext(_connectionString, serviceProvider, disableBatching);
}
}
}
diff --git a/benchmark/EFCore.SqlServer.Benchmarks/Query/FuncletizationSqlServerTests.cs b/benchmark/EFCore.SqlServer.Benchmarks/Query/FuncletizationSqlServerTests.cs
index 0c968314fc6..f8c051068b9 100644
--- a/benchmark/EFCore.SqlServer.Benchmarks/Query/FuncletizationSqlServerTests.cs
+++ b/benchmark/EFCore.SqlServer.Benchmarks/Query/FuncletizationSqlServerTests.cs
@@ -9,7 +9,7 @@ public class FuncletizationSqlServerTests : FuncletizationTests
{
protected override OrdersFixtureBase CreateFixture()
{
- return new OrdersFixture("Perf_Query_Funcletization");
+ return new OrdersSqlServerFixture("Perf_Query_Funcletization");
}
}
}
diff --git a/benchmark/EFCore.SqlServer.Benchmarks/Query/NavigationsQuerySqlServerTests.cs b/benchmark/EFCore.SqlServer.Benchmarks/Query/NavigationsQuerySqlServerTests.cs
index 92cc36c4b6a..4598be811d7 100644
--- a/benchmark/EFCore.SqlServer.Benchmarks/Query/NavigationsQuerySqlServerTests.cs
+++ b/benchmark/EFCore.SqlServer.Benchmarks/Query/NavigationsQuerySqlServerTests.cs
@@ -9,7 +9,7 @@ public class NavigationsQuerySqlServerTests : NavigationsQueryTests
{
protected override AdventureWorksContextBase CreateContext()
{
- return AdventureWorksFixture.CreateContext();
+ return AdventureWorksSqlServerFixture.CreateContext();
}
}
}
diff --git a/benchmark/EFCore.SqlServer.Benchmarks/Query/QueryCompilationSqlServerTests.cs b/benchmark/EFCore.SqlServer.Benchmarks/Query/QueryCompilationSqlServerTests.cs
index 6dd3c5ab708..f3fc8e59e05 100644
--- a/benchmark/EFCore.SqlServer.Benchmarks/Query/QueryCompilationSqlServerTests.cs
+++ b/benchmark/EFCore.SqlServer.Benchmarks/Query/QueryCompilationSqlServerTests.cs
@@ -15,7 +15,7 @@ public override IServiceCollection AddProviderServices(IServiceCollection servic
public override OrdersFixtureBase CreateFixture()
{
- return new OrdersFixture("Perf_Query_Compilation");
+ return new OrdersSqlServerFixture("Perf_Query_Compilation");
}
}
}
diff --git a/benchmark/EFCore.SqlServer.Benchmarks/Query/RawSqlQuerySqlServerTests.cs b/benchmark/EFCore.SqlServer.Benchmarks/Query/RawSqlQuerySqlServerTests.cs
index 351649b638d..078449f9625 100644
--- a/benchmark/EFCore.SqlServer.Benchmarks/Query/RawSqlQuerySqlServerTests.cs
+++ b/benchmark/EFCore.SqlServer.Benchmarks/Query/RawSqlQuerySqlServerTests.cs
@@ -18,7 +18,7 @@ @maxPrice decimal(18, 2)
protected override OrdersFixtureBase CreateFixture()
{
- return new OrdersFixture("Perf_Query_RawSql");
+ return new OrdersSqlServerFixture("Perf_Query_RawSql");
}
}
}
diff --git a/benchmark/EFCore.SqlServer.Benchmarks/Query/SimpleQuerySqlServerTests.cs b/benchmark/EFCore.SqlServer.Benchmarks/Query/SimpleQuerySqlServerTests.cs
index 014fbd498fd..2a303be7745 100644
--- a/benchmark/EFCore.SqlServer.Benchmarks/Query/SimpleQuerySqlServerTests.cs
+++ b/benchmark/EFCore.SqlServer.Benchmarks/Query/SimpleQuerySqlServerTests.cs
@@ -9,7 +9,7 @@ public class SimpleQuerySqlServerTests : SimpleQueryTests
{
protected override OrdersFixtureBase CreateFixture()
{
- return new OrdersFixture("Perf_Query_Simple");
+ return new OrdersSqlServerFixture("Perf_Query_Simple");
}
}
}
diff --git a/benchmark/EFCore.SqlServer.Benchmarks/Support/Program.cs b/benchmark/EFCore.SqlServer.Benchmarks/Support/Program.cs
new file mode 100644
index 00000000000..6c209d3444c
--- /dev/null
+++ b/benchmark/EFCore.SqlServer.Benchmarks/Support/Program.cs
@@ -0,0 +1,23 @@
+// Copyright (c) .NET Foundation. All rights reserved.
+// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+
+using System;
+using System.Linq;
+using BenchmarkDotNet.Attributes;
+using BenchmarkDotNet.Columns;
+using BenchmarkDotNet.Configs;
+using BenchmarkDotNet.Diagnosers;
+using BenchmarkDotNet.Exporters;
+using BenchmarkDotNet.Exporters.Csv;
+using BenchmarkDotNet.Horology;
+using BenchmarkDotNet.Reports;
+using BenchmarkDotNet.Running;
+
+// ReSharper disable once CheckNamespace
+namespace Microsoft.EntityFrameworkCore.Benchmarks
+{
+ public class Program
+ {
+ private static void Main(string[] args) => EFCoreBenchmarkRunner.Run(args, typeof(Program).Assembly);
+ }
+}
diff --git a/benchmark/EFCore.SqlServer.Benchmarks/Support/SqlServerBenchmarkEnvironment.cs b/benchmark/EFCore.SqlServer.Benchmarks/Support/SqlServerBenchmarkEnvironment.cs
new file mode 100644
index 00000000000..dc57d6f0c73
--- /dev/null
+++ b/benchmark/EFCore.SqlServer.Benchmarks/Support/SqlServerBenchmarkEnvironment.cs
@@ -0,0 +1,39 @@
+// Copyright (c) .NET Foundation. All rights reserved.
+// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+
+using System.IO;
+using Microsoft.Extensions.Configuration;
+
+#if RELEASE20 || RELEASE21 || RELEASE22 || DEBUG20 || DEBUG21 || DEBUG22
+using System.Data.SqlClient;
+#else
+using Microsoft.Data.SqlClient;
+#endif
+
+// ReSharper disable once CheckNamespace
+namespace Microsoft.EntityFrameworkCore.Benchmarks
+{
+ public static class SqlServerBenchmarkEnvironment
+ {
+ public static IConfiguration Config { get; }
+
+ static SqlServerBenchmarkEnvironment()
+ {
+ var configBuilder = new ConfigurationBuilder()
+ .SetBasePath(Directory.GetCurrentDirectory())
+ .AddJsonFile("config.json", optional: true)
+ .AddEnvironmentVariables();
+
+ Config = configBuilder.Build()
+ .GetSection("Test:SqlServer");
+ }
+
+ private const string DefaultConnectionString
+ = "Data Source=(localdb)\\MSSQLLocalDB;Database=master;Integrated Security=True;Connect Timeout=30;ConnectRetryCount=0";
+
+ public static string DefaultConnection => Config["DefaultConnection"] ?? DefaultConnectionString;
+
+ public static string CreateConnectionString(string name, string fileName = null, bool? multipleActiveResultSets = null)
+ => new SqlConnectionStringBuilder(DefaultConnection) { InitialCatalog = name }.ToString();
+ }
+}
diff --git a/benchmark/EFCore.SqlServer.Benchmarks/UpdatePipeline/SimpleUpdatePipelineSqlServerTests.cs b/benchmark/EFCore.SqlServer.Benchmarks/UpdatePipeline/SimpleUpdatePipelineSqlServerTests.cs
index d70c11de4e8..577e23765f8 100644
--- a/benchmark/EFCore.SqlServer.Benchmarks/UpdatePipeline/SimpleUpdatePipelineSqlServerTests.cs
+++ b/benchmark/EFCore.SqlServer.Benchmarks/UpdatePipeline/SimpleUpdatePipelineSqlServerTests.cs
@@ -13,7 +13,7 @@ public class Insert : InsertBase
{
public override OrdersFixtureBase CreateFixture()
{
- return new OrdersFixture("Perf_UpdatePipeline_Simple");
+ return new OrdersSqlServerFixture("Perf_UpdatePipeline_Simple");
}
}
@@ -21,7 +21,7 @@ public class Update : UpdateBase
{
public override OrdersFixtureBase CreateFixture()
{
- return new OrdersFixture("Perf_UpdatePipeline_Simple");
+ return new OrdersSqlServerFixture("Perf_UpdatePipeline_Simple");
}
}
@@ -29,7 +29,7 @@ public class Delete : DeleteBase
{
public override OrdersFixtureBase CreateFixture()
{
- return new OrdersFixture("Perf_UpdatePipeline_Simple");
+ return new OrdersSqlServerFixture("Perf_UpdatePipeline_Simple");
}
}
@@ -37,7 +37,7 @@ public class Mixed : MixedBase
{
public override OrdersFixtureBase CreateFixture()
{
- return new OrdersFixture("Perf_UpdatePipeline_Simple");
+ return new OrdersSqlServerFixture("Perf_UpdatePipeline_Simple");
}
}
}
diff --git a/benchmark/EFCore.SqlServer.Benchmarks/config.json b/benchmark/EFCore.SqlServer.Benchmarks/config.json
deleted file mode 100644
index f9e779b79e7..00000000000
--- a/benchmark/EFCore.SqlServer.Benchmarks/config.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "benchmarks": {
- "runIterations": false,
- "resultDatabases": {
- "local": "Server=(localdb)\\mssqllocaldb;Database=Benchmarks;Trusted_Connection=True;"
- },
- "benchmarkDatabase": "Server=(localdb)\\mssqllocaldb;Trusted_Connection=True;MultipleActiveResultSets=true;",
- "productVersion": "EF Core SqlServer"
- }
-}
\ No newline at end of file
diff --git a/benchmark/EFCore.SqlServer.EF6.Benchmarks/config.json b/benchmark/EFCore.SqlServer.EF6.Benchmarks/config.json
deleted file mode 100644
index 71a37990222..00000000000
--- a/benchmark/EFCore.SqlServer.EF6.Benchmarks/config.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "benchmarks": {
- "runIterations": false,
- "resultDatabases": {
- "local": "Server=(localdb)\\mssqllocaldb;Database=Benchmarks;Trusted_Connection=True;"
- },
- "benchmarkDatabase": "Server=(localdb)\\mssqllocaldb;Trusted_Connection=True;MultipleActiveResultSets=true;",
- "productVersion": "EF SqlServer 6.2"
- }
-}
\ No newline at end of file
diff --git a/benchmark/EFCore.Sqlite.Benchmarks/ChangeTracker/DbSetOperationSqliteTests.cs b/benchmark/EFCore.Sqlite.Benchmarks/ChangeTracker/DbSetOperationSqliteTests.cs
index bdd12aacb66..a5d4d55c9ad 100644
--- a/benchmark/EFCore.Sqlite.Benchmarks/ChangeTracker/DbSetOperationSqliteTests.cs
+++ b/benchmark/EFCore.Sqlite.Benchmarks/ChangeTracker/DbSetOperationSqliteTests.cs
@@ -13,7 +13,7 @@ public class AddDataVariations : AddDataVariationsBase
{
public override OrdersFixtureBase CreateFixture()
{
- return new OrdersFixture("Perf_ChangeTracker_DbSetOperation");
+ return new OrdersSqliteFixture("Perf_ChangeTracker_DbSetOperation");
}
}
@@ -21,7 +21,7 @@ public class ExistingDataVariations : ExistingDataVariationsBase
{
public override OrdersFixtureBase CreateFixture()
{
- return new OrdersFixture("Perf_ChangeTracker_DbSetOperation");
+ return new OrdersSqliteFixture("Perf_ChangeTracker_DbSetOperation");
}
}
}
diff --git a/benchmark/EFCore.Sqlite.Benchmarks/ChangeTracker/FixupSqliteTests.cs b/benchmark/EFCore.Sqlite.Benchmarks/ChangeTracker/FixupSqliteTests.cs
index e66dd5d27f3..4fe436be12f 100644
--- a/benchmark/EFCore.Sqlite.Benchmarks/ChangeTracker/FixupSqliteTests.cs
+++ b/benchmark/EFCore.Sqlite.Benchmarks/ChangeTracker/FixupSqliteTests.cs
@@ -13,7 +13,7 @@ public class ChildVariations : ChildVariationsBase
{
public override OrdersFixtureBase CreateFixture()
{
- return new OrdersFixture("Perf_ChangeTracker_Fixup");
+ return new OrdersSqliteFixture("Perf_ChangeTracker_Fixup");
}
}
@@ -21,7 +21,7 @@ public class ParentVariations : ParentVariationsBase
{
public override OrdersFixtureBase CreateFixture()
{
- return new OrdersFixture("Perf_ChangeTracker_Fixup");
+ return new OrdersSqliteFixture("Perf_ChangeTracker_Fixup");
}
}
}
diff --git a/benchmark/EFCore.Sqlite.Benchmarks/EFCore.Sqlite.Benchmarks.csproj b/benchmark/EFCore.Sqlite.Benchmarks/EFCore.Sqlite.Benchmarks.csproj
index fd1db18eec9..ffa5fcd28fe 100644
--- a/benchmark/EFCore.Sqlite.Benchmarks/EFCore.Sqlite.Benchmarks.csproj
+++ b/benchmark/EFCore.Sqlite.Benchmarks/EFCore.Sqlite.Benchmarks.csproj
@@ -11,32 +11,32 @@
true
+
+
+
+
-
+
-
+
-
+
-
+
-
- $(DefineConstants);OLD_FROM_SQL
-
-
Always
@@ -47,9 +47,4 @@
-
-
-
-
-
diff --git a/benchmark/EFCore.Sqlite.Benchmarks/Initialization/ColdStartEnabledSqliteTest.cs b/benchmark/EFCore.Sqlite.Benchmarks/Initialization/ColdStartEnabledSqliteTest.cs
index d6704534f85..b4e5b8a63f1 100644
--- a/benchmark/EFCore.Sqlite.Benchmarks/Initialization/ColdStartEnabledSqliteTest.cs
+++ b/benchmark/EFCore.Sqlite.Benchmarks/Initialization/ColdStartEnabledSqliteTest.cs
@@ -9,7 +9,7 @@ public class ColdStartEnabledSqliteTest : ColdStartEnabledTests
{
protected override AdventureWorksContextBase CreateContext()
{
- return AdventureWorksFixture.CreateContext();
+ return AdventureWorksSqliteFixture.CreateContext();
}
}
}
diff --git a/benchmark/EFCore.Sqlite.Benchmarks/Models/AdventureWorks/AdventureWorksContext.cs b/benchmark/EFCore.Sqlite.Benchmarks/Models/AdventureWorks/AdventureWorksSqliteContext.cs
similarity index 79%
rename from benchmark/EFCore.Sqlite.Benchmarks/Models/AdventureWorks/AdventureWorksContext.cs
rename to benchmark/EFCore.Sqlite.Benchmarks/Models/AdventureWorks/AdventureWorksSqliteContext.cs
index 76896a07125..3b2be9697f5 100644
--- a/benchmark/EFCore.Sqlite.Benchmarks/Models/AdventureWorks/AdventureWorksContext.cs
+++ b/benchmark/EFCore.Sqlite.Benchmarks/Models/AdventureWorks/AdventureWorksSqliteContext.cs
@@ -4,11 +4,11 @@
namespace Microsoft.EntityFrameworkCore.Benchmarks.Models.AdventureWorks
{
- public class AdventureWorksContext : AdventureWorksContextBase
+ public class AdventureWorksSqliteContext : AdventureWorksContextBase
{
private readonly string _connectionString;
- public AdventureWorksContext(string connectionString)
+ public AdventureWorksSqliteContext(string connectionString)
{
_connectionString = connectionString;
}
diff --git a/benchmark/EFCore.Sqlite.Benchmarks/Models/AdventureWorks/AdventureWorksFixture.cs b/benchmark/EFCore.Sqlite.Benchmarks/Models/AdventureWorks/AdventureWorksSqliteFixture.cs
similarity index 80%
rename from benchmark/EFCore.Sqlite.Benchmarks/Models/AdventureWorks/AdventureWorksFixture.cs
rename to benchmark/EFCore.Sqlite.Benchmarks/Models/AdventureWorks/AdventureWorksSqliteFixture.cs
index a8c9903132f..c40a33e1f5d 100644
--- a/benchmark/EFCore.Sqlite.Benchmarks/Models/AdventureWorks/AdventureWorksFixture.cs
+++ b/benchmark/EFCore.Sqlite.Benchmarks/Models/AdventureWorks/AdventureWorksSqliteFixture.cs
@@ -6,10 +6,10 @@
namespace Microsoft.EntityFrameworkCore.Benchmarks.Models.AdventureWorks
{
- public static class AdventureWorksFixture
+ public static class AdventureWorksSqliteFixture
{
private static readonly string _baseDirectory
- = Path.GetDirectoryName(new Uri(typeof(AdventureWorksFixture).Assembly.CodeBase).LocalPath);
+ = Path.GetDirectoryName(new Uri(typeof(AdventureWorksSqliteFixture).Assembly.CodeBase).LocalPath);
private static readonly string _connectionString
= $"Data Source={Path.Combine(_baseDirectory, "AdventureWorks2014.db")}";
@@ -17,7 +17,7 @@ private static readonly string _connectionString
// This method is called from timed code, be careful when changing it
public static AdventureWorksContextBase CreateContext()
{
- return new AdventureWorksContext(_connectionString);
+ return new AdventureWorksSqliteContext(_connectionString);
}
}
}
diff --git a/benchmark/EFCore.Sqlite.Benchmarks/Models/Orders/OrdersContext.cs b/benchmark/EFCore.Sqlite.Benchmarks/Models/Orders/OrdersSqliteContext.cs
similarity index 79%
rename from benchmark/EFCore.Sqlite.Benchmarks/Models/Orders/OrdersContext.cs
rename to benchmark/EFCore.Sqlite.Benchmarks/Models/Orders/OrdersSqliteContext.cs
index b40e4ebb0c6..558047511f2 100644
--- a/benchmark/EFCore.Sqlite.Benchmarks/Models/Orders/OrdersContext.cs
+++ b/benchmark/EFCore.Sqlite.Benchmarks/Models/Orders/OrdersSqliteContext.cs
@@ -6,12 +6,12 @@
namespace Microsoft.EntityFrameworkCore.Benchmarks.Models.Orders
{
- public class OrdersContext : OrdersContextBase
+ public class OrdersSqliteContext : OrdersContextBase
{
private readonly string _connectionString;
private readonly bool _disableBatching;
- public OrdersContext(string connectionString, IServiceProvider serviceProvider = null, bool disableBatching = false)
+ public OrdersSqliteContext(string connectionString, IServiceProvider serviceProvider = null, bool disableBatching = false)
: base(serviceProvider)
{
_connectionString = connectionString;
diff --git a/benchmark/EFCore.Sqlite.Benchmarks/Models/Orders/OrdersFixture.cs b/benchmark/EFCore.Sqlite.Benchmarks/Models/Orders/OrdersSqliteFixture.cs
similarity index 67%
rename from benchmark/EFCore.Sqlite.Benchmarks/Models/Orders/OrdersFixture.cs
rename to benchmark/EFCore.Sqlite.Benchmarks/Models/Orders/OrdersSqliteFixture.cs
index 4c6e3c69c0c..4526d3c6887 100644
--- a/benchmark/EFCore.Sqlite.Benchmarks/Models/Orders/OrdersFixture.cs
+++ b/benchmark/EFCore.Sqlite.Benchmarks/Models/Orders/OrdersSqliteFixture.cs
@@ -6,21 +6,21 @@
namespace Microsoft.EntityFrameworkCore.Benchmarks.Models.Orders
{
- public class OrdersFixture : OrdersFixtureBase
+ public class OrdersSqliteFixture : OrdersFixtureBase
{
private static readonly string _baseDirectory
- = Path.GetDirectoryName(new Uri(typeof(OrdersFixture).Assembly.CodeBase).LocalPath);
+ = Path.GetDirectoryName(new Uri(typeof(OrdersSqliteFixture).Assembly.CodeBase).LocalPath);
private readonly string _connectionString;
- public OrdersFixture(string databaseName)
+ public OrdersSqliteFixture(string databaseName)
{
_connectionString = $"Data Source={Path.Combine(_baseDirectory, databaseName + ".db")}";
}
public override OrdersContextBase CreateContext(IServiceProvider serviceProvider = null, bool disableBatching = false)
{
- return new OrdersContext(_connectionString, serviceProvider, disableBatching);
+ return new OrdersSqliteContext(_connectionString, serviceProvider, disableBatching);
}
}
}
diff --git a/benchmark/EFCore.Sqlite.Benchmarks/Query/FuncletizationSqliteTests.cs b/benchmark/EFCore.Sqlite.Benchmarks/Query/FuncletizationSqliteTests.cs
index 87af17bf0da..4062ba3de13 100644
--- a/benchmark/EFCore.Sqlite.Benchmarks/Query/FuncletizationSqliteTests.cs
+++ b/benchmark/EFCore.Sqlite.Benchmarks/Query/FuncletizationSqliteTests.cs
@@ -9,7 +9,7 @@ public class FuncletizationSqliteTests : FuncletizationTests
{
protected override OrdersFixtureBase CreateFixture()
{
- return new OrdersFixture("Perf_Query_Funcletization");
+ return new OrdersSqliteFixture("Perf_Query_Funcletization");
}
}
}
diff --git a/benchmark/EFCore.Sqlite.Benchmarks/Query/NavigationsQuerySqliteTests.cs b/benchmark/EFCore.Sqlite.Benchmarks/Query/NavigationsQuerySqliteTests.cs
index d3557e0cada..51f9c4fbd68 100644
--- a/benchmark/EFCore.Sqlite.Benchmarks/Query/NavigationsQuerySqliteTests.cs
+++ b/benchmark/EFCore.Sqlite.Benchmarks/Query/NavigationsQuerySqliteTests.cs
@@ -9,7 +9,7 @@ public class NavigationsQuerySqliteTests : NavigationsQueryTests
{
protected override AdventureWorksContextBase CreateContext()
{
- return AdventureWorksFixture.CreateContext();
+ return AdventureWorksSqliteFixture.CreateContext();
}
}
}
diff --git a/benchmark/EFCore.Sqlite.Benchmarks/Query/QueryCompilationSqliteTests.cs b/benchmark/EFCore.Sqlite.Benchmarks/Query/QueryCompilationSqliteTests.cs
index a7854f4dc19..a2bfeea6e18 100644
--- a/benchmark/EFCore.Sqlite.Benchmarks/Query/QueryCompilationSqliteTests.cs
+++ b/benchmark/EFCore.Sqlite.Benchmarks/Query/QueryCompilationSqliteTests.cs
@@ -15,7 +15,7 @@ public override IServiceCollection AddProviderServices(IServiceCollection servic
public override OrdersFixtureBase CreateFixture()
{
- return new OrdersFixture("Perf_Query_Compilation");
+ return new OrdersSqliteFixture("Perf_Query_Compilation");
}
}
}
diff --git a/benchmark/EFCore.Sqlite.Benchmarks/Query/RawSqlQuerySqliteTests.cs b/benchmark/EFCore.Sqlite.Benchmarks/Query/RawSqlQuerySqliteTests.cs
index 7d8d62af5c5..65aa414cefa 100644
--- a/benchmark/EFCore.Sqlite.Benchmarks/Query/RawSqlQuerySqliteTests.cs
+++ b/benchmark/EFCore.Sqlite.Benchmarks/Query/RawSqlQuerySqliteTests.cs
@@ -19,7 +19,7 @@ public override Task StoredProcedure()
protected override OrdersFixtureBase CreateFixture()
{
- return new OrdersFixture("Perf_Query_RawSql");
+ return new OrdersSqliteFixture("Perf_Query_RawSql");
}
}
}
diff --git a/benchmark/EFCore.Sqlite.Benchmarks/Query/SimpleQuerySqliteTests.cs b/benchmark/EFCore.Sqlite.Benchmarks/Query/SimpleQuerySqliteTests.cs
index bc0d351d05f..9d3c92c735e 100644
--- a/benchmark/EFCore.Sqlite.Benchmarks/Query/SimpleQuerySqliteTests.cs
+++ b/benchmark/EFCore.Sqlite.Benchmarks/Query/SimpleQuerySqliteTests.cs
@@ -9,7 +9,7 @@ public class SimpleQuerySqliteTests : SimpleQueryTests
{
protected override OrdersFixtureBase CreateFixture()
{
- return new OrdersFixture("Perf_Query_Simple");
+ return new OrdersSqliteFixture("Perf_Query_Simple");
}
}
}
diff --git a/benchmark/EFCore.Sqlite.Benchmarks/Support/Program.cs b/benchmark/EFCore.Sqlite.Benchmarks/Support/Program.cs
new file mode 100644
index 00000000000..6c209d3444c
--- /dev/null
+++ b/benchmark/EFCore.Sqlite.Benchmarks/Support/Program.cs
@@ -0,0 +1,23 @@
+// Copyright (c) .NET Foundation. All rights reserved.
+// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+
+using System;
+using System.Linq;
+using BenchmarkDotNet.Attributes;
+using BenchmarkDotNet.Columns;
+using BenchmarkDotNet.Configs;
+using BenchmarkDotNet.Diagnosers;
+using BenchmarkDotNet.Exporters;
+using BenchmarkDotNet.Exporters.Csv;
+using BenchmarkDotNet.Horology;
+using BenchmarkDotNet.Reports;
+using BenchmarkDotNet.Running;
+
+// ReSharper disable once CheckNamespace
+namespace Microsoft.EntityFrameworkCore.Benchmarks
+{
+ public class Program
+ {
+ private static void Main(string[] args) => EFCoreBenchmarkRunner.Run(args, typeof(Program).Assembly);
+ }
+}
diff --git a/benchmark/EFCore.Sqlite.Benchmarks/UpdatePipeline/SimpleUpdatePipelineSqliteTests.cs b/benchmark/EFCore.Sqlite.Benchmarks/UpdatePipeline/SimpleUpdatePipelineSqliteTests.cs
index 84e45cc8496..caa0085b0a0 100644
--- a/benchmark/EFCore.Sqlite.Benchmarks/UpdatePipeline/SimpleUpdatePipelineSqliteTests.cs
+++ b/benchmark/EFCore.Sqlite.Benchmarks/UpdatePipeline/SimpleUpdatePipelineSqliteTests.cs
@@ -13,7 +13,7 @@ public class Insert : InsertBase
{
public override OrdersFixtureBase CreateFixture()
{
- return new OrdersFixture("Perf_UpdatePipeline_Simple");
+ return new OrdersSqliteFixture("Perf_UpdatePipeline_Simple");
}
}
@@ -21,7 +21,7 @@ public class Update : UpdateBase
{
public override OrdersFixtureBase CreateFixture()
{
- return new OrdersFixture("Perf_UpdatePipeline_Simple");
+ return new OrdersSqliteFixture("Perf_UpdatePipeline_Simple");
}
}
@@ -29,7 +29,7 @@ public class Delete : DeleteBase
{
public override OrdersFixtureBase CreateFixture()
{
- return new OrdersFixture("Perf_UpdatePipeline_Simple");
+ return new OrdersSqliteFixture("Perf_UpdatePipeline_Simple");
}
}
@@ -37,7 +37,7 @@ public class Mixed : MixedBase
{
public override OrdersFixtureBase CreateFixture()
{
- return new OrdersFixture("Perf_UpdatePipeline_Simple");
+ return new OrdersSqliteFixture("Perf_UpdatePipeline_Simple");
}
}
}
diff --git a/benchmark/EFCore.Sqlite.Benchmarks/config.json b/benchmark/EFCore.Sqlite.Benchmarks/config.json
deleted file mode 100644
index 74194d02377..00000000000
--- a/benchmark/EFCore.Sqlite.Benchmarks/config.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "benchmarks": {
- "runIterations": false,
- "resultDatabases": {
- "local": "Server=(localdb)\\mssqllocaldb;Database=Benchmarks;Trusted_Connection=True;"
- },
- "benchmarkDatabase": "Server=(localdb)\\mssqllocaldb;Trusted_Connection=True;MultipleActiveResultSets=true;",
- "productVersion": "EF Core Sqlite"
- }
-}
\ No newline at end of file
diff --git a/benchmark/Shared/BenchmarkEnvironment.cs b/benchmark/Shared/BenchmarkEnvironment.cs
deleted file mode 100644
index 155c32cbfc9..00000000000
--- a/benchmark/Shared/BenchmarkEnvironment.cs
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using Microsoft.Extensions.Configuration;
-
-namespace Microsoft.EntityFrameworkCore.Benchmarks
-{
- public class BenchmarkEnvironment
- {
- private static readonly Lazy _instance = new Lazy(
- () =>
- {
- var config = new ConfigurationBuilder()
- .AddJsonFile("config.json")
- .AddEnvironmentVariables()
- .Build();
-
- var resultDatabasesSection = config.GetSection("benchmarks:resultDatabases");
-
- return new BenchmarkEnvironment
- {
- RunIterations = bool.Parse(config["benchmarks:runIterations"]),
- ResultDatabases = resultDatabasesSection.GetChildren().Select(s => s.Value).ToArray(),
- BenchmarkDatabase = config["benchmarks:benchmarkDatabase"],
- ProductVersion = config["benchmarks:productVersion"],
- CustomData = config["benchmarks:customData"]
- };
- });
-
- private BenchmarkEnvironment()
- {
- }
-
- public static BenchmarkEnvironment Instance => _instance.Value;
-
- public bool RunIterations { get; private set; }
- public IEnumerable ResultDatabases { get; private set; }
- public string BenchmarkDatabase { get; private set; }
- public string ProductVersion { get; private set; }
- public string CustomData { get; private set; }
- }
-}
diff --git a/benchmark/Shared/Program.cs b/benchmark/Shared/Program.cs
deleted file mode 100644
index ddaeb2fe2ad..00000000000
--- a/benchmark/Shared/Program.cs
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-
-using System;
-using System.Linq;
-using BenchmarkDotNet.Attributes;
-using BenchmarkDotNet.Columns;
-using BenchmarkDotNet.Configs;
-using BenchmarkDotNet.Diagnosers;
-using BenchmarkDotNet.Exporters;
-using BenchmarkDotNet.Exporters.Csv;
-using BenchmarkDotNet.Horology;
-using BenchmarkDotNet.Reports;
-using BenchmarkDotNet.Running;
-
-namespace Microsoft.EntityFrameworkCore.Benchmarks
-{
- public static class Program
- {
- private static void Main(string[] args)
- {
- var config = DefaultConfig.Instance
- .With(DefaultConfig.Instance.GetDiagnosers().Concat(new[] { MemoryDiagnoser.Default }).ToArray());
-
- var index = Array.FindIndex(args, s => s == "--perflab");
- if (index >= 0)
- {
- var argList = args.ToList();
- argList.RemoveAt(index);
- args = argList.ToArray();
-
- config = config
- .With(new[]
- {
- StatisticColumn.OperationsPerSecond,
- new ParamsSummaryColumn()
- })
- .With(new[]
- {
- MarkdownExporter.GitHub,
- new CsvExporter(
- CsvSeparator.Comma,
- new SummaryStyle
- {
- PrintUnitsInHeader = true,
- PrintUnitsInContent = false,
- TimeUnit = TimeUnit.Microsecond,
- SizeUnit = SizeUnit.KB
- })
- });
- }
-
- BenchmarkSwitcher.FromAssembly(typeof(Program).Assembly).Run(args, config);
- }
- }
-}