Skip to content

Commit

Permalink
migrated ContosoUniversity.Data project to core 2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
alimon808 committed Sep 12, 2017
1 parent 90a2c31 commit debd1c7
Show file tree
Hide file tree
Showing 4 changed files with 75 additions and 54 deletions.
92 changes: 58 additions & 34 deletions ContosoUniversity.Data/ApplicationContextFactory.cs
Original file line number Diff line number Diff line change
@@ -1,56 +1,80 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.Extensions.Configuration;
using System;
using System.IO;

namespace ContosoUniversity.Data
{
// modeled from https://www.benday.com/2017/02/17/ef-core-migrations-without-hard-coding-a-connection-string-using-idbcontextfactory
public class ApplicationContextFactory : IDbContextFactory<ApplicationContext>
public class ApplicationContextFactory : IDesignTimeDbContextFactory<ApplicationContext>
{
public ApplicationContext Create()
public ApplicationContext CreateDbContext(string[] args)
{
var environmentName = Environment.GetEnvironmentVariable("Hosting:Environment");
var basePath = AppContext.BaseDirectory;
return Create(basePath, environmentName);
var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("Hosting:Environment")}.json", true)
.AddEnvironmentVariables()
.Build();

var builder = new DbContextOptionsBuilder<ApplicationContext>();
builder.UseSqlServer(config.GetConnectionString("DefaultConnection"));
return new ApplicationContext(builder.Options);
}

private ApplicationContext Create(string basePath, string environmentName)
{
var builder = new ConfigurationBuilder()
.SetBasePath(basePath)
.AddJsonFile("settings.json")
.AddJsonFile($"settings.{environmentName}.json", true)
.AddEnvironmentVariables();
//public ApplicationContext Create()
//{
// var environmentName = Environment.GetEnvironmentVariable("Hosting:Environment");
// var basePath = AppContext.BaseDirectory;

var config = builder.Build();
// return Create(basePath, environmentName);
//}

var connstr = config.GetConnectionString("DefaultConnection");
//private ApplicationContext Create(string basePath, string environmentName)
//{
// var builder = new ConfigurationBuilder()
// .SetBasePath(basePath)
// .AddJsonFile("appsettings.json")
// .AddJsonFile($"appsettings.{environmentName}.json", true)
// .AddEnvironmentVariables();

if (String.IsNullOrWhiteSpace(connstr))
{
throw new InvalidOperationException("Could not find a connection string named 'DefaultConnection'");
}
// var config = builder.Build();

return Create(connstr);
}
// var connstr = config.GetConnectionString("DefaultConnection");

private ApplicationContext Create(string connectionString)
{
if (string.IsNullOrEmpty(connectionString))
{
throw new ArgumentException($"{nameof(connectionString)} is null or empty");
}
// if (String.IsNullOrWhiteSpace(connstr))
// {
// throw new InvalidOperationException("Could not find a connection string named 'DefaultConnection'");
// }

var optionsBuilder = new DbContextOptionsBuilder<ApplicationContext>();
optionsBuilder.UseSqlServer(connectionString, x => x.MigrationsHistoryTable("Migration", "Contoso"));
// return Create(connstr);
//}

//private ApplicationContext Create(string connectionString)
//{
// if (string.IsNullOrEmpty(connectionString))
// {
// throw new ArgumentException($"{nameof(connectionString)} is null or empty");
// }

// var optionsBuilder = new DbContextOptionsBuilder<ApplicationContext>();
// optionsBuilder.UseSqlServer(connectionString, x => x.MigrationsHistoryTable("Migration", "Contoso"));

// return new ApplicationContext(optionsBuilder.Options);
//}

////public ApplicationContext Create(DbContextFactoryOptions options)
////{
//// return Create(options.ContentRootPath, options.EnvironmentName);
////}

//public ApplicationContext Create(DbContextFactoryOptions options)
//{
// return Create(Directory.GetCurrentDirectory(), Environment.GetEnvironmentVariable("Hosting:Environment"));
//}

return new ApplicationContext(optionsBuilder.Options);
}

public ApplicationContext Create(DbContextFactoryOptions options)
{
return Create(options.ContentRootPath, options.EnvironmentName);
}
}
}
24 changes: 12 additions & 12 deletions ContosoUniversity.Data/ContosoUniversity.Data.csproj
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netcoreapp1.1</TargetFramework>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="1.1.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="1.1.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="1.1.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.2" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="1.1.2" />
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="1.1.2" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="1.1.2" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="1.1.2" />
<PackageReference Include="System.Collections.Immutable" Version="1.3.1" />
<PackageReference Include="System.Diagnostics.DiagnosticSource" Version="4.4.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="2.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="2.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="2.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="2.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.0.0" />
<PackageReference Include="System.Collections.Immutable" Version="1.4.0" />
<PackageReference Include="System.Diagnostics.DiagnosticSource" Version="4.4.1" />
</ItemGroup>

<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0" />
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
</ItemGroup>
</Project>
File renamed without changes.
13 changes: 5 additions & 8 deletions ContosoUniversity.sln
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.26430.14
VisualStudioVersion = 15.0.26730.12
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ContosoUniversity.Data", "ContosoUniversity.Data\ContosoUniversity.Data.csproj", "{DF2790E6-5498-4C3B-86B2-B59ADEF7776F}"
EndProject
Expand All @@ -17,9 +17,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ContosoUniversity.Web.Tests
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ContosoUniversity.Identity", "ContosoUniversity.Identity\ContosoUniversity.Identity.csproj", "{49716984-3121-456A-8076-B3356A73B15B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ContosoUniversity.Identity.Tests", "ContosoUniversity.Identity.Tests\ContosoUniversity.Identity.Tests.csproj", "{02B51D2C-9892-4138-BA9F-88D06FC7A22D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ContosoUniversity.Services", "ContosoUniversity.Services\ContosoUniversity.Services.csproj", "{1EF0AA73-52B2-41F5-A386-AF94F99E4B7E}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ContosoUniversity.Services", "ContosoUniversity.Services\ContosoUniversity.Services.csproj", "{1EF0AA73-52B2-41F5-A386-AF94F99E4B7E}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Expand Down Expand Up @@ -55,10 +53,6 @@ Global
{49716984-3121-456A-8076-B3356A73B15B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{49716984-3121-456A-8076-B3356A73B15B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{49716984-3121-456A-8076-B3356A73B15B}.Release|Any CPU.Build.0 = Release|Any CPU
{02B51D2C-9892-4138-BA9F-88D06FC7A22D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{02B51D2C-9892-4138-BA9F-88D06FC7A22D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{02B51D2C-9892-4138-BA9F-88D06FC7A22D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{02B51D2C-9892-4138-BA9F-88D06FC7A22D}.Release|Any CPU.Build.0 = Release|Any CPU
{1EF0AA73-52B2-41F5-A386-AF94F99E4B7E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1EF0AA73-52B2-41F5-A386-AF94F99E4B7E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1EF0AA73-52B2-41F5-A386-AF94F99E4B7E}.Release|Any CPU.ActiveCfg = Release|Any CPU
Expand All @@ -67,4 +61,7 @@ Global
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {3CFF549F-4CEC-4826-B10B-B7F5F9BD943C}
EndGlobalSection
EndGlobal

0 comments on commit debd1c7

Please sign in to comment.