-
Notifications
You must be signed in to change notification settings - Fork 58
Expand file tree
/
Copy pathStartup.cs
More file actions
80 lines (70 loc) · 2.79 KB
/
Startup.cs
File metadata and controls
80 lines (70 loc) · 2.79 KB
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
71
72
73
74
75
76
77
78
79
80
using AutoMapper;
using DAL.EFCore;
using Domain.OData;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.OData;
using Microsoft.AspNetCore.OData.Query.Expressions;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.OData.Edm;
using Microsoft.OData.ModelBuilder;
using WebAPI.OData.EFCore.Binders;
using WebAPI.OData.EFCore.Mappings;
namespace WebAPI.OData.EFCore
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
//Rebuild
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<MyDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddControllers()
.AddOData(opt => opt.EnableQueryFeatures()
.AddRouteComponents("", GetEdmModel(), services => services.AddSingleton<ISearchBinder, OpsTenantSearchBinder>()));
services.AddSingleton<AutoMapper.IConfigurationProvider>
(
new MapperConfiguration(cfg =>
{
cfg.AddMaps(typeof(Startup).Assembly);
cfg.AllowNullCollections = true;
}, new NullLoggerFactory())
)
.AddScoped<IMapper>(sp => new Mapper(sp.GetRequiredService<AutoMapper.IConfigurationProvider>(), sp.GetService));
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.EnvironmentName == "Development")
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
private IEdmModel GetEdmModel()
{
var builder = new ODataConventionModelBuilder();
builder.EnableLowerCamelCase();
//builder.Namespace = "com.FooBar";
builder.EntitySet<OpsTenant>(nameof(OpsTenant));
builder.EntitySet<CoreBuilding>(nameof(CoreBuilding));
builder.EntitySet<OpsBuilder>(nameof(OpsBuilder));
builder.EntitySet<OpsCity>(nameof(OpsCity));
return builder.GetEdmModel();
}
}
}