/
Delete.cs
70 lines (55 loc) · 1.79 KB
/
Delete.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
namespace ContosoUniversityCore.Features.Department
{
using System;
using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks;
using Infrastructure;
using MediatR;
using System.Linq;
using AutoMapper;
public class Delete
{
public class Query : IRequest<Command>
{
public int Id { get; set; }
}
public class Command : IRequest
{
public string Name { get; set; }
public decimal Budget { get; set; }
public DateTime StartDate { get; set; }
public int Id { get; set; }
[Display(Name = "Administrator")]
public string AdministratorFullName { get; set; }
public byte[] RowVersion { get; set; }
}
public class QueryHandler : AsyncRequestHandler<Query, Command>
{
private readonly SchoolContext _db;
public QueryHandler(SchoolContext db)
{
_db = db;
}
protected override async Task<Command> HandleCore(Query message)
{
var department = await _db.Departments
.Where(d => d.Id == message.Id)
.ProjectToSingleOrDefaultAsync<Command>();
return department;
}
}
public class CommandHandler : AsyncRequestHandler<Command>
{
private readonly SchoolContext _db;
public CommandHandler(SchoolContext db)
{
_db = db;
}
protected override async Task HandleCore(Command message)
{
var department = await _db.Departments.FindAsync(message.Id);
_db.Departments.Remove(department);
}
}
}
}