Update IoC and the "GET" function in the repository (lock issue)

This commit is contained in:
Sébastien André
2019-11-10 20:03:03 +01:00
parent f3f9b91a15
commit 2e6ec6ec85
9 changed files with 40 additions and 34 deletions

View File

@@ -11,32 +11,31 @@ namespace skydiveLogs_api.Data
{ {
public class AircraftRepository : IAircraftRepository public class AircraftRepository : IAircraftRepository
{ {
public AircraftRepository(IDataProvider dataProvider)
{
_dataProvider = dataProvider;
_col = _dataProvider.GetCollection<Aircraft>();
}
public IEnumerable<Aircraft> GetAll() public IEnumerable<Aircraft> GetAll()
{ {
IEnumerable<Aircraft> result = new List<Aircraft>(); var results = _col.FindAll().ToList();
_dataProvider.Close();
using (var db = new LiteDatabase(@".\Data\MyData.db")) return results;
{
var col = db.GetCollection<Aircraft>("Aircraft");
result = col.FindAll().ToList();
}
return result;
} }
public Aircraft GetById(int id) public Aircraft GetById(int id)
{ {
Aircraft result; var result = _col.FindById(new BsonValue(id));
_dataProvider.Close();
using (var db = new LiteDatabase(@".\Data\MyData.db"))
{
var col = db.GetCollection<Aircraft>("Aircraft");
result = col.FindById(new BsonValue(id));
}
return result; return result;
} }
private readonly IDataProvider _dataProvider;
private readonly LiteCollection<Aircraft> _col;
} }
} }

View File

@@ -24,16 +24,7 @@ namespace skydiveLogs_api.Data
public DropZone GetById(int id) public DropZone GetById(int id)
{ {
DropZone result; return _col.FindById(new BsonValue(id)); ;
using (var db = new LiteDatabase(@".\Data\MyData.db"))
{
var col = db.GetCollection<DropZone>("DropZone");
result = col.FindById(new BsonValue(id));
}
return result;
} }
private readonly IDataProvider _dataProvider; private readonly IDataProvider _dataProvider;

View File

@@ -1,12 +1,15 @@
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
namespace skydiveLogs_api.Ioc namespace skydiveLogs_api.Ioc
{ {
public class IocService public class IocService
{ {
public IocService(IServiceCollection services) public IocService(IServiceCollection services,
IConfiguration configuration)
{ {
_services = services; _services = services;
_configuration = configuration;
} }
public void Configure() public void Configure()
@@ -28,9 +31,12 @@ namespace skydiveLogs_api.Ioc
_services.AddScoped<Data.Interface.IJumpTypeRepository, Data.JumpTypeRepository>(); _services.AddScoped<Data.Interface.IJumpTypeRepository, Data.JumpTypeRepository>();
_services.AddScoped<Data.Interface.IGearRepository, Data.GearRepository>(); _services.AddScoped<Data.Interface.IGearRepository, Data.GearRepository>();
_services.AddScoped<Data.Interface.IDataProvider, Data.LiteDbProvider>(); string connectionString = _configuration.GetConnectionString("DefaultConnection");
_services.AddScoped<Data.Interface.IDataProvider>(c => new Data.LiteDbProvider(connectionString));
} }
private readonly IServiceCollection _services; private readonly IServiceCollection _services;
private readonly IConfiguration _configuration;
} }
} }

View File

@@ -11,6 +11,9 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Microsoft.Extensions.Configuration.Abstractions">
<HintPath>..\..\..\..\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.configuration.abstractions\2.2.0\lib\netstandard2.0\Microsoft.Extensions.Configuration.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.DependencyInjection.Abstractions"> <Reference Include="Microsoft.Extensions.DependencyInjection.Abstractions">
<HintPath>..\..\..\..\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.dependencyinjection.abstractions\2.2.0\lib\netstandard2.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll</HintPath> <HintPath>..\..\..\..\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.dependencyinjection.abstractions\2.2.0\lib\netstandard2.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll</HintPath>
</Reference> </Reference>

View File

@@ -0,0 +1,7 @@
namespace skydiveLogs_api.Model
{
public class DatabaseOptions
{
public string ConnectionString { get; set; }
}
}

View File

@@ -35,7 +35,7 @@ namespace skydiveLogs_api
}); });
// IoC // IoC
var iocService = new IocService(services); var iocService = new IocService(services, Configuration);
iocService.Configure(); iocService.Configure();
services.AddAutoMapper(typeof(Mapper.ModelProfile)); services.AddAutoMapper(typeof(Mapper.ModelProfile));

View File

@@ -6,6 +6,6 @@
}, },
"AllowedHosts": "*", "AllowedHosts": "*",
"ConnectionStrings": { "ConnectionStrings": {
"JumpsDatabase": "Filename=./Data/JumpsDb.db" "DefaultConnection": "Filename=./Data/JumpsDb.db"
} }
} }

View File

@@ -8,11 +8,11 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<None Remove="Data\MyData.db" /> <None Remove="Data\JumpsDb.db" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Content Include="Data\MyData.db"> <Content Include="Data\JumpsDb.db">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content> </Content>
</ItemGroup> </ItemGroup>