TransactionData application
This solution demonstrates how to create API, that accepts XML and CSV data files, containing simple "transaction" model, records and query to the data store, while logging all possible exceptions on the way.
Technologies
- .NET Core 3.1
- ASP.NET Core 3.1
- Entity Framework Core 3.1
- MediatR
- AutoMapper
- CSharpFunctionalExtensions
- CsvHelper
- Serilog
- Moq
- xUnit
Overview
Application Core
TransactionData.Domain
This project contains domain of application, which includes: commands, constants, dtos, enums, events, models and queries.
TransactionData.Service.Interfaces
This project contains abstractions for TransactionData.Service.
Application Infrastructure
TransactionData.Data
This project contains all entityConfigurations, repositories and DbContext.
TransactionData.Data.Entities
This project contains all entities, that are used to generate tables, using EF Core code-first approach.
TransactionData.Data.Interfaces
This project contains data contractor interfaces, abstractions, that are used with Dependency injection to provide loose coupling between application and data provider.
TransactionData.Data.MSSql
This project contains Migrations for MSSQL database.
TransactionData.Data.Sqlite
This project contains Migrations for Sqlite database.
TransactionData.Service
This project contains command, query and event handlers for managing application requests.
TransactionData.IoC
This project represents Inversion of control, powered by ASP.NET Core Dependency injection mechanism. Introduces loose coupling between projects.
Outer Layer
TransactionData.WebUI
This project is based on ASP.NET Core 3.1. Represents outer layer of application, WebAPI. Contains user friendly interface, powered by Swagger.
Tests
TransactionData.UnitTests
This project contains application unit tests.
License
The content of this project itself is licensed under the Gnu general public license