Skip to content

Commit 26193a4

Browse files
Updated to ASP.NET Core 3.0
1 parent cbce7b4 commit 26193a4

File tree

10 files changed

+79
-167
lines changed

10 files changed

+79
-167
lines changed

SampleWebApiAspNetCore.Test/ControllerTests/v1/FoodsControllerTests.cs

Lines changed: 0 additions & 71 deletions
This file was deleted.

SampleWebApiAspNetCore.Test/SampleWebApiAspNetCore.Test.csproj

Lines changed: 0 additions & 23 deletions
This file was deleted.

SampleWebApiAspNetCore.Test/TestClientProvider.cs

Lines changed: 0 additions & 21 deletions
This file was deleted.

SampleWebApiAspNetCore.sln

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
3-
# Visual Studio 15
4-
VisualStudioVersion = 15.0.27703.2026
3+
# Visual Studio Version 16
4+
VisualStudioVersion = 16.0.29318.209
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SampleWebApiAspNetCore", "SampleWebApiAspNetCore\SampleWebApiAspNetCore.csproj", "{62E0EE7C-8CF6-4E04-B3A1-49A19DE3FC75}"
77
EndProject
8-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SampleWebApiAspNetCore.Test", "SampleWebApiAspNetCore.Test\SampleWebApiAspNetCore.Test.csproj", "{34867F50-D123-4211-82F1-9561725F7833}"
9-
EndProject
108
Global
119
GlobalSection(SolutionConfigurationPlatforms) = preSolution
1210
Debug|Any CPU = Debug|Any CPU
@@ -17,10 +15,6 @@ Global
1715
{62E0EE7C-8CF6-4E04-B3A1-49A19DE3FC75}.Debug|Any CPU.Build.0 = Debug|Any CPU
1816
{62E0EE7C-8CF6-4E04-B3A1-49A19DE3FC75}.Release|Any CPU.ActiveCfg = Release|Any CPU
1917
{62E0EE7C-8CF6-4E04-B3A1-49A19DE3FC75}.Release|Any CPU.Build.0 = Release|Any CPU
20-
{34867F50-D123-4211-82F1-9561725F7833}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
21-
{34867F50-D123-4211-82F1-9561725F7833}.Debug|Any CPU.Build.0 = Debug|Any CPU
22-
{34867F50-D123-4211-82F1-9561725F7833}.Release|Any CPU.ActiveCfg = Release|Any CPU
23-
{34867F50-D123-4211-82F1-9561725F7833}.Release|Any CPU.Build.0 = Release|Any CPU
2418
EndGlobalSection
2519
GlobalSection(SolutionProperties) = preSolution
2620
HideSolutionNode = FALSE

SampleWebApiAspNetCore/Controllers/v1/FoodsController.cs

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,15 @@ public class FoodsController : ControllerBase
2020
{
2121
private readonly IFoodRepository _foodRepository;
2222
private readonly IUrlHelper _urlHelper;
23+
private readonly IMapper _mapper;
2324

24-
public FoodsController(IUrlHelper urlHelper, IFoodRepository foodRepository)
25+
public FoodsController(
26+
IUrlHelper urlHelper,
27+
IFoodRepository foodRepository,
28+
IMapper mapper)
2529
{
2630
_foodRepository = foodRepository;
31+
_mapper = mapper;
2732
_urlHelper = urlHelper;
2833
}
2934

@@ -78,7 +83,7 @@ public ActionResult<FoodItemDto> AddFood([FromBody] FoodCreateDto foodCreateDto)
7883
return BadRequest();
7984
}
8085

81-
FoodItem toAdd = Mapper.Map<FoodItem>(foodCreateDto);
86+
FoodItem toAdd = _mapper.Map<FoodItem>(foodCreateDto);
8287

8388
_foodRepository.Add(toAdd);
8489

@@ -90,7 +95,7 @@ public ActionResult<FoodItemDto> AddFood([FromBody] FoodCreateDto foodCreateDto)
9095
FoodItem newFoodItem = _foodRepository.GetSingle(toAdd.Id);
9196

9297
return CreatedAtRoute(nameof(GetSingleFood), new { id = newFoodItem.Id },
93-
Mapper.Map<FoodItemDto>(newFoodItem));
98+
_mapper.Map<FoodItemDto>(newFoodItem));
9499
}
95100

96101
[HttpPatch("{id:int}", Name = nameof(PartiallyUpdateFood))]
@@ -108,8 +113,8 @@ public ActionResult<FoodItemDto> PartiallyUpdateFood(int id, [FromBody] JsonPatc
108113
return NotFound();
109114
}
110115

111-
FoodUpdateDto foodUpdateDto = Mapper.Map<FoodUpdateDto>(existingEntity);
112-
patchDoc.ApplyTo(foodUpdateDto, ModelState);
116+
FoodUpdateDto foodUpdateDto = _mapper.Map<FoodUpdateDto>(existingEntity);
117+
patchDoc.ApplyTo(foodUpdateDto);
113118

114119
TryValidateModel(foodUpdateDto);
115120

@@ -118,15 +123,15 @@ public ActionResult<FoodItemDto> PartiallyUpdateFood(int id, [FromBody] JsonPatc
118123
return BadRequest(ModelState);
119124
}
120125

121-
Mapper.Map(foodUpdateDto, existingEntity);
126+
_mapper.Map(foodUpdateDto, existingEntity);
122127
FoodItem updated = _foodRepository.Update(id, existingEntity);
123128

124129
if (!_foodRepository.Save())
125130
{
126131
throw new Exception("Updating a fooditem failed on save.");
127132
}
128133

129-
return Ok(Mapper.Map<FoodItemDto>(updated));
134+
return Ok(_mapper.Map<FoodItemDto>(updated));
130135
}
131136

132137
[HttpDelete]
@@ -166,7 +171,7 @@ public ActionResult<FoodItemDto> UpdateFood(int id, [FromBody]FoodUpdateDto food
166171
return NotFound();
167172
}
168173

169-
Mapper.Map(foodUpdateDto, existingFoodItem);
174+
_mapper.Map(foodUpdateDto, existingFoodItem);
170175

171176
_foodRepository.Update(id, existingFoodItem);
172177

@@ -175,7 +180,7 @@ public ActionResult<FoodItemDto> UpdateFood(int id, [FromBody]FoodUpdateDto food
175180
throw new Exception("Updating a fooditem failed on save.");
176181
}
177182

178-
return Ok(Mapper.Map<FoodItemDto>(existingFoodItem));
183+
return Ok(_mapper.Map<FoodItemDto>(existingFoodItem));
179184
}
180185

181186
[HttpGet("GetRandomMeal", Name = nameof(GetRandomMeal))]
@@ -184,7 +189,7 @@ public ActionResult GetRandomMeal()
184189
ICollection<FoodItem> foodItems = _foodRepository.GetRandomMeal();
185190

186191
IEnumerable<FoodItemDto> dtos = foodItems
187-
.Select(x => Mapper.Map<FoodItemDto>(x));
192+
.Select(x => _mapper.Map<FoodItemDto>(x));
188193

189194
var links = new List<LinkDto>();
190195

@@ -255,7 +260,7 @@ private List<LinkDto> CreateLinksForCollection(QueryParameters queryParameters,
255260
private dynamic ExpandSingleFoodItem(FoodItem foodItem)
256261
{
257262
var links = GetLinks(foodItem.Id);
258-
FoodItemDto item = Mapper.Map<FoodItemDto>(foodItem);
263+
FoodItemDto item = _mapper.Map<FoodItemDto>(foodItem);
259264

260265
var resourceToReturn = item.ToDynamic() as IDictionary<string, object>;
261266
resourceToReturn.Add("links", links);
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
using AutoMapper;
2+
using SampleWebApiAspNetCore.Dtos;
3+
using SampleWebApiAspNetCore.Entities;
4+
5+
namespace SampleWebApiAspNetCore.MappingProfiles
6+
{
7+
public class FoodMappings : Profile
8+
{
9+
public FoodMappings()
10+
{
11+
CreateMap<FoodItem, FoodItemDto>().ReverseMap();
12+
CreateMap<FoodItem, FoodUpdateDto>().ReverseMap();
13+
CreateMap<FoodItem, FoodCreateDto>().ReverseMap();
14+
}
15+
}
16+
}

SampleWebApiAspNetCore/Program.cs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using Microsoft.AspNetCore;
22
using Microsoft.AspNetCore.Hosting;
33
using Microsoft.Extensions.DependencyInjection;
4+
using Microsoft.Extensions.Hosting;
45
using Microsoft.Extensions.Logging;
56
using SampleWebApiAspNetCore.Repositories;
67
using SampleWebApiAspNetCore.Services;
@@ -12,7 +13,7 @@ public class Program
1213
{
1314
public static void Main(string[] args)
1415
{
15-
var host = CreateWebHostBuilder(args).Build();
16+
var host = CreateHostBuilder(args).Build();
1617

1718
// Initializes db.
1819
using (var scope = host.Services.CreateScope())
@@ -34,8 +35,11 @@ public static void Main(string[] args)
3435
host.Run();
3536
}
3637

37-
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
38-
WebHost.CreateDefaultBuilder(args)
39-
.UseStartup<Startup>();
38+
public static IHostBuilder CreateHostBuilder(string[] args) =>
39+
Host.CreateDefaultBuilder(args)
40+
.ConfigureWebHostDefaults(webBuilder =>
41+
{
42+
webBuilder.UseStartup<Startup>();
43+
});
4044
}
4145
}
Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk.Web">
22

33
<PropertyGroup>
4-
<TargetFramework>netcoreapp2.2</TargetFramework>
4+
<TargetFramework>netcoreapp3.0</TargetFramework>
55
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
66
</PropertyGroup>
77

@@ -10,12 +10,19 @@
1010
</ItemGroup>
1111

1212
<ItemGroup>
13-
<PackageReference Include="AutoMapper" Version="8.1.0" />
14-
<PackageReference Include="Microsoft.AspNetCore.App" />
15-
<PackageReference Include="Microsoft.AspNetCore.Mvc.Versioning" Version="3.1.2" />
16-
<PackageReference Include="Microsoft.AspNetCore.Mvc.Versioning.ApiExplorer" Version="3.2.0" />
17-
<PackageReference Include="Swashbuckle.AspNetCore" Version="4.0.1" />
18-
<PackageReference Include="System.Linq.Dynamic.Core" Version="1.0.14" />
13+
<PackageReference Include="AutoMapper" Version="9.0.0" />
14+
<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="7.0.0" />
15+
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.0.0" />
16+
<PackageReference Include="Microsoft.AspNetCore.Mvc.Versioning" Version="4.0.0-preview8.19405.7" />
17+
<PackageReference Include="Microsoft.AspNetCore.Mvc.Versioning.ApiExplorer" Version="4.0.0-preview8.19405.7" />
18+
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="3.0.0" />
19+
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.0.0" />
20+
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.0.0">
21+
<PrivateAssets>all</PrivateAssets>
22+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
23+
</PackageReference>
24+
<PackageReference Include="Swashbuckle.AspNetCore" Version="5.0.0-rc3" />
25+
<PackageReference Include="System.Linq.Dynamic.Core" Version="1.0.19" />
1926
</ItemGroup>
2027

2128
</Project>

SampleWebApiAspNetCore/Services/SeedDataService.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ public class SeedDataService : ISeedDataService
99
{
1010
public async Task Initialize(FoodDbContext context)
1111
{
12-
context.FoodItems.Add(new FoodItem() { Calories = 1000, Name = "Lasagne", Created = DateTime.Now });
13-
context.FoodItems.Add(new FoodItem() { Calories = 1100, Name = "Hamburger", Created = DateTime.Now });
14-
context.FoodItems.Add(new FoodItem() { Calories = 1200, Name = "Spaghetti", Created = DateTime.Now });
15-
context.FoodItems.Add(new FoodItem() { Calories = 1300, Name = "Pizza", Created = DateTime.Now });
12+
context.FoodItems.Add(new FoodItem() { Calories = 1000, Type = "Starter", Name = "Lasagne", Created = DateTime.Now });
13+
context.FoodItems.Add(new FoodItem() { Calories = 1100, Type = "Main", Name = "Hamburger", Created = DateTime.Now });
14+
context.FoodItems.Add(new FoodItem() { Calories = 1200, Type = "Dessert", Name = "Spaghetti", Created = DateTime.Now });
15+
context.FoodItems.Add(new FoodItem() { Calories = 1300, Type = "Starter", Name = "Pizza", Created = DateTime.Now });
1616

1717
await context.SaveChangesAsync();
1818
}

0 commit comments

Comments
 (0)