Add project files.

This commit is contained in:
pkus
2025-01-24 13:37:01 +01:00
parent ee70a3c8af
commit ed726eea09
94 changed files with 4591 additions and 0 deletions

View File

@@ -0,0 +1,7 @@
namespace FaKrosnoEfDataModel.Dtos
{
public class DtoBase
{
public int ID { get; set; }
}
}

View File

@@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FaKrosnoEfDataModel.Dtos
{
public class PurchaserDto : DtoBase
{
public string PurchaserCode { get; set; }
public string PurchaserDesc { get; set; }
}
}

View File

@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FaKrosnoEfDataModel.Dtos
{
public class RecipientDto : DtoBase
{
public int PurchaserID { get; set; }
public string RecipientCode { get; set; }
public string RecipientDesc { get; set; }
public PurchaserDto Purchaser { get; set; }
}
}

View File

@@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FaKrosnoEfDataModel.Dtos
{
public class ScheduleOrderDetailDetailDto : DtoBase
{
public int ScheduleOrderDetailID { get; set; }
public int Qty { get; set; }
public DateTime DateFrom { get; set; }
public DateTime DateTo { get; set; }
public string SccType { get; set; }
public string? SccDesc { get; set; }
public string? QtyType { get; set; }
public string? QtyDesc { get; set; }
public string Status { get; set; }
public DateTime? ShipDate { get; set; }
public DateTime LastUpdateDate { get; set; }
public IList<ScheduleOrderDetailDetailMiscDto> ScheduleOrderDetailDetailMiscs { get; set; }
}
}

View File

@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FaKrosnoEfDataModel.Dtos
{
public class ScheduleOrderDetailDetailMiscDto : DtoBase
{
public int ScheduleOrderDetailDetailID { get; set; }
public string Type { get; set; }
public string Value { get; set; }
public string? Label { get; set; }
public bool Display { get; set; }
}
}

View File

@@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FaKrosnoEfDataModel.Dtos
{
public class ScheduleOrderDetailDto : DtoBase
{
public int ScheduleOrderID { get; set; }
public string Sc_productCode { get; set; }
public string Sh_productCode { get; set; }
public int? Price { get; set; }
public IList<ScheduleOrderDetailDetailDto> ScheduleOrderDetailDetails { get; set; }
public IList<ScheduleOrderDetailMiscDto> ScheduleOrderDetailMiscs { get; set; }
}
}

View File

@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FaKrosnoEfDataModel.Dtos
{
public class ScheduleOrderDetailMiscDto : DtoBase
{
public int ScheduleOrderDetailID { get; set; }
public string Type { get; set; }
public string Value { get; set; }
public string? Label { get; set; }
public bool Display { get; set; }
}
}

View File

@@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FaKrosnoEfDataModel.Dtos
{
public class ScheduleOrderDto : DtoBase
{
public string PONum { get; set; }
public int OrderID { get; set; }
public int RecipientID { get; set; }
public DateTime LastUpdateDate { get; set; }
public int DocNumber { get; set; }
public string? DocType { get; set; }
public RecipientDto Recipient { get; set; }
public IList<ScheduleOrderDetailDto> ScheduleOrderDetails { get; set; }
public IList<ScheduleOrderMiscDto> ScheduleOrderMiscs { get; set; }
}
}

View File

@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FaKrosnoEfDataModel.Dtos
{
public class ScheduleOrderMiscDto : DtoBase
{
public int ScheduleOrderID { get; set; }
public string Type { get; set; }
public string Value { get; set; }
public string? Label { get; set; }
public bool Display { get; set; }
}
}

View File

@@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FaKrosnoEfDataModel.Entities
{
public class EntityBase
{
public int ID { get; set; }
}
}

View File

@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FaKrosnoEfDataModel.Entities
{
public class Purchaser : EntityBase
{
public string PurchaserCode { get; set; }
public string PurchaserDesc { get; set; }
public ICollection<Recipient> Recipients { get; set; }
}
}

View File

@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FaKrosnoEfDataModel.Entities
{
public class Recipient : EntityBase
{
public int PurchaserID { get; set; }
public Purchaser Purchaser { get; set; }
public string RecipientCode { get; set; }
public string RecipientDesc { get; set; }
public ICollection<ScheduleOrder> ScheduleOrders { get; set; }
}
}

View File

@@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FaKrosnoEfDataModel.Entities
{
public class ScheduleOrder : EntityBase
{
public string PONum { get; set; }
public int OrderID { get; set; }
public int RecipientID { get; set; }
public Recipient Recipient { get; set; }
public DateTime LastUpdateDate { get; set; }
public int DocNumber { get; set; }
public string? DocType { get; set; }
public ICollection<ScheduleOrderDetail> ScheduleOrderDetails { get; set; }
public ICollection<ScheduleOrderMisc> ScheduleOrderMiscs { get; set; }
}
}

View File

@@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FaKrosnoEfDataModel.Entities
{
public class ScheduleOrderDetail : EntityBase
{
public int ScheduleOrderID { get; set; }
public ScheduleOrder ScheduleOrder { get; set; }
public string Sc_productCode { get; set; }
public string Sh_productCode { get; set; }
public int? Price { get; set; }
public ICollection<ScheduleOrderDetailDetail> ScheduleOrderDetailDetails { get; set; }
public ICollection<ScheduleOrderDetailMisc> ScheduleOrderDetailMiscs { get; set; }
}
}

View File

@@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FaKrosnoEfDataModel.Entities
{
public class ScheduleOrderDetailDetail : EntityBase
{
public int ScheduleOrderDetailID { get; set; }
public ScheduleOrderDetail ScheduleOrderDetail { get; set; }
public int Qty { get; set; }
public DateTime DateFrom { get; set; }
public DateTime DateTo { get; set; }
public string SccType { get; set; }
public string? SccDesc { get; set; }
public string? QtyType { get; set; }
public string? QtyDesc { get; set; }
public string Status { get; set; }
public DateTime? ShipDate { get; set; }
public DateTime LastUpdateDate { get; set; }
public ICollection<ScheduleOrderDetailDetailMisc> ScheduleOrderDetailDetailMiscs { get; set; }
}
}

View File

@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FaKrosnoEfDataModel.Entities
{
public class ScheduleOrderDetailDetailMisc : EntityBase
{
public int ScheduleOrderDetailDetailID { get; set; }
public ScheduleOrderDetailDetail ScheduleOrderDetailDetail { get; set; }
public string Type { get; set; }
public string Value { get; set; }
public string? Label { get; set; }
public bool Display { get; set; }
}
}

View File

@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FaKrosnoEfDataModel.Entities
{
public class ScheduleOrderDetailMisc : EntityBase
{
public int ScheduleOrderDetailID { get; set; }
public ScheduleOrderDetail ScheduleOrderDetail { get; set; }
public string Type { get; set; }
public string Value { get; set; }
public string? Label { get; set; }
public bool Display { get; set; }
}
}

View File

@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FaKrosnoEfDataModel.Entities
{
public class ScheduleOrderMisc : EntityBase
{
public int ScheduleOrderID { get; set; }
public ScheduleOrder ScheduleOrder { get; set; }
public string Type { get; set; }
public string Value { get; set; }
public string? Label { get; set; }
public bool Display { get; set; }
}
}

View File

@@ -0,0 +1,90 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using FaKrosnoEfDataModel.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
namespace FaKrosnoEfDataModel
{
public class FaKrosnoDbContext : DbContext
{
public FaKrosnoDbContext(DbContextOptions<FaKrosnoDbContext> options) : base(options) { }
public DbSet<Purchaser> Purchasers { get; set; }
public DbSet<Recipient> Recipients { get; set; }
public DbSet<ScheduleOrder> ScheduleOrders { get; set; }
public DbSet<ScheduleOrderDetail> ScheduleOrderDetails { get; set; }
public DbSet<ScheduleOrderDetailDetail> ScheduleOrderDetailDetails { get; set; }
public DbSet<ScheduleOrderDetailDetailMisc> ScheduleOrderDetailDetailMiscs { get; set; }
public DbSet<ScheduleOrderDetailMisc> ScheduleOrderDetailMiscs { get; set; }
public DbSet<ScheduleOrderMisc> ScheduleOrderMiscs { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.Build();
var connectionString = configuration.GetConnectionString("FaKrosnoConnection");
optionsBuilder.UseSqlServer(connectionString, options => options.CommandTimeout(300));
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Purchaser>().ToTable("purchaser");
modelBuilder.Entity<Recipient>().ToTable("recipient")
.HasOne(p => p.Purchaser)
.WithMany(p => p.Recipients)
.HasForeignKey(p => p.PurchaserID);
modelBuilder.Entity<ScheduleOrder>().ToTable("schedule_order")
.HasOne(s => s.Recipient)
.WithMany(r => r.ScheduleOrders)
.HasForeignKey(s => s.RecipientID);
modelBuilder.Entity<ScheduleOrderDetail>().ToTable("schedule_order_detail")
.HasOne(s => s.ScheduleOrder)
.WithMany(s => s.ScheduleOrderDetails)
.HasForeignKey(s => s.ScheduleOrderID);
modelBuilder.Entity<ScheduleOrderDetailDetail>().ToTable("schedule_order_detail_detail")
.HasOne(s => s.ScheduleOrderDetail)
.WithMany(s => s.ScheduleOrderDetailDetails)
.HasForeignKey(s => s.ScheduleOrderDetailID);
modelBuilder.Entity<ScheduleOrderDetailDetailMisc>().ToTable("schedule_order_detail_detail_misc")
.HasOne(s => s.ScheduleOrderDetailDetail)
.WithMany(s => s.ScheduleOrderDetailDetailMiscs)
.HasForeignKey(s => s.ScheduleOrderDetailDetailID);
modelBuilder.Entity<ScheduleOrderDetailMisc>().ToTable("schedule_order_detail_misc")
.HasOne(s => s.ScheduleOrderDetail)
.WithMany(s => s.ScheduleOrderDetailMiscs)
.HasForeignKey(s => s.ScheduleOrderDetailID);
modelBuilder.Entity<ScheduleOrderMisc>().ToTable("schedule_order_misc")
.HasOne(s => s.ScheduleOrder)
.WithMany(s => s.ScheduleOrderMiscs)
.HasForeignKey(s => s.ScheduleOrderID);
modelBuilder.Entity<ScheduleOrderDetail>(entity => entity.Property(x => x.Price).IsRequired(false));
modelBuilder.Entity<ScheduleOrderDetailMisc>(entity => entity.Property(x => x.Label).IsRequired(false));
modelBuilder.Entity<ScheduleOrderDetailDetailMisc>(entity => entity.Property(x => x.Label).IsRequired(false));
modelBuilder.Entity<ScheduleOrderDetailDetail>(entity =>
{
entity.Property(x => x.SccDesc).IsRequired(false);
entity.Property(x => x.QtyType).IsRequired(false);
entity.Property(x => x.QtyDesc).IsRequired(false);
entity.Property(x => x.ShipDate).IsRequired(false);
});
}
}
}

View File

@@ -0,0 +1,31 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="AutoMapper" Version="13.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.Extensions.Configuration" Version="9.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="9.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="9.0.0" />
</ItemGroup>
<ItemGroup>
<None Update="appsettings.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>

View File

@@ -0,0 +1,25 @@
using AutoMapper;
using FaKrosnoEfDataModel.Dtos;
using FaKrosnoEfDataModel.Entities;
namespace FaKrosnoEfDataModel
{
public class MappingProfile : Profile
{
public MappingProfile()
{
CreateMap<EntityBase, DtoBase>().ReverseMap();
CreateMap<Purchaser, PurchaserDto>().IncludeBase<EntityBase, DtoBase>().ReverseMap();
CreateMap<Recipient, RecipientDto>().IncludeBase<EntityBase, DtoBase>().ReverseMap();
CreateMap<ScheduleOrder, ScheduleOrderDto>().IncludeBase<EntityBase, DtoBase>().ReverseMap();
CreateMap<ScheduleOrderDetail, ScheduleOrderDetailDto>().IncludeBase<EntityBase, DtoBase>().ReverseMap();
CreateMap<ScheduleOrderDetailDetail, ScheduleOrderDetailDetailDto>().IncludeBase<EntityBase, DtoBase>()
.ReverseMap();
CreateMap<ScheduleOrderDetailDetailMisc, ScheduleOrderDetailDetailMiscDto>()
.IncludeBase<EntityBase, DtoBase>().ReverseMap();
CreateMap<ScheduleOrderDetailMisc, ScheduleOrderDetailMiscDto>().IncludeBase<EntityBase, DtoBase>()
.ReverseMap();
CreateMap<ScheduleOrderMisc, ScheduleOrderMiscDto>().IncludeBase<EntityBase, DtoBase>().ReverseMap();
}
}
}

View File

@@ -0,0 +1,33 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using FaKrosnoEfDataModel.Entities;
using Microsoft.EntityFrameworkCore;
namespace FaKrosnoEfDataModel.Queries
{
public static class ScheduleOrderQueries
{
public static readonly Func<FaKrosnoDbContext, IEnumerable<ScheduleOrder?>> GetEntities =
EF.CompileQuery((FaKrosnoDbContext context) => context.ScheduleOrders.Include(x => x.Recipient).ThenInclude(x => x.Purchaser)
.Include(x => x.ScheduleOrderDetails).ThenInclude(x => x.ScheduleOrderDetailMiscs)
.Include(x => x.ScheduleOrderDetails).ThenInclude(x => x.ScheduleOrderDetailDetails)
.ThenInclude(x => x.ScheduleOrderDetailDetailMiscs).Include(x => x.ScheduleOrderMiscs));
public static readonly Func<FaKrosnoDbContext, DateTime, IEnumerable<ScheduleOrder?>> GetEntitiesByDate =
EF.CompileQuery((FaKrosnoDbContext context, DateTime fromDate) => context.ScheduleOrders
.Include(x => x.Recipient).ThenInclude(x => x.Purchaser).Include(x => x.ScheduleOrderDetails)
.ThenInclude(x => x.ScheduleOrderDetailMiscs).Include(x => x.ScheduleOrderDetails)
.ThenInclude(x => x.ScheduleOrderDetailDetails).ThenInclude(x => x.ScheduleOrderDetailDetailMiscs)
.Include(x => x.ScheduleOrderMiscs).Where(x => x.LastUpdateDate > fromDate));
public static readonly Func<FaKrosnoDbContext, int, ScheduleOrder?> GetById = EF.CompileQuery(
(FaKrosnoDbContext context, int id) => context.ScheduleOrders.Include(x => x.Recipient).ThenInclude(x => x.Purchaser)
.Include(x => x.ScheduleOrderDetails).ThenInclude(x => x.ScheduleOrderDetailMiscs)
.Include(x => x.ScheduleOrderDetails).ThenInclude(x => x.ScheduleOrderDetailDetails)
.ThenInclude(x => x.ScheduleOrderDetailDetailMiscs).Include(x => x.ScheduleOrderMiscs)
.FirstOrDefault(x => x.ID == id));
}
}

View File

@@ -0,0 +1,14 @@
using FaKrosnoEfDataModel.Dtos;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FaKrosnoEfDataModel.Services
{
public interface IScheduleOrderDetailsService
{
Task<IEnumerable<ScheduleOrderDetailDto>?> GetScheduleOrderDetailsAsync(int scheduleOrderId);
}
}

View File

@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using FaKrosnoEfDataModel.Dtos;
namespace FaKrosnoEfDataModel.Services
{
public interface IScheduleOrderService
{
Task<IEnumerable<ScheduleOrderDto?>> GetEntities();
Task<ScheduleOrderDto?> GetById(int id);
Task<IEnumerable<ScheduleOrderDto?>> GetByRecipientId(int recipientId);
Task<IEnumerable<ScheduleOrderDto?>> GetEntitiesByLastUpdateDate(DateTime date);
Task<IEnumerable<ScheduleOrderDto?>> GetByRecipientAndLastUpdateDate(int recipientId, DateTime date);
}
}

View File

@@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using AutoMapper;
using AutoMapper.QueryableExtensions;
using FaKrosnoEfDataModel.Dtos;
using Microsoft.EntityFrameworkCore;
namespace FaKrosnoEfDataModel.Services
{
public class ScheduleOrderDetailsService : ServiceBase<ScheduleOrderDetailDto>, IScheduleOrderDetailsService
{
public ScheduleOrderDetailsService(FaKrosnoDbContext context, IMapper mapper) : base(context, mapper)
{
}
public async Task<IEnumerable<ScheduleOrderDetailDto>?> GetScheduleOrderDetailsAsync(int scheduleOrderId)
{
return await Context.ScheduleOrderDetails.Where(x => x.ScheduleOrderID == scheduleOrderId)
.ProjectTo<ScheduleOrderDetailDto>(Mapper.ConfigurationProvider).ToListAsync();
}
}
}

View File

@@ -0,0 +1,51 @@
using AutoMapper;
using FaKrosnoEfDataModel.Dtos;
using FaKrosnoEfDataModel.Entities;
using FaKrosnoEfDataModel.Queries;
using Microsoft.EntityFrameworkCore;
namespace FaKrosnoEfDataModel.Services
{
public class ScheduleOrderService : ServiceBase<ScheduleOrderDto>, IScheduleOrderService
{
public ScheduleOrderService(FaKrosnoDbContext context, IMapper mapper) : base(context, mapper)
{
}
public override async Task<ScheduleOrderDto?> GetById(int id)
{
var scheduleOrder = await Task.FromResult(ScheduleOrderQueries.GetById(Context, id));
return scheduleOrder != null ? Mapper.Map<ScheduleOrderDto>(scheduleOrder) : null;
}
public async Task<IEnumerable<ScheduleOrderDto?>> GetByRecipientId(int recipientId)
{
IList<ScheduleOrderDto> scheduleOrders = (await GetAll()).ToList();
return scheduleOrders.Where(x => x?.RecipientID == recipientId);
}
public async Task<IEnumerable<ScheduleOrderDto?>> GetByRecipientAndLastUpdateDate(int recipientId, DateTime date)
{
IList<ScheduleOrderDto?> scheduleOrders = (await GetEntitiesByLastUpdateDate(date)).ToList();
return scheduleOrders.Where(x => x?.RecipientID == recipientId && x.LastUpdateDate >= date);
}
public async Task<IEnumerable<ScheduleOrderDto?>> GetEntities()
{
IList<ScheduleOrder> scheduleOrders = await Context.ScheduleOrders.Include(x => x.Recipient)
.ThenInclude(x => x.Purchaser).ToListAsync();
return Mapper.Map<IEnumerable<ScheduleOrderDto>>(scheduleOrders);
}
public async Task<IEnumerable<ScheduleOrderDto?>> GetEntitiesByLastUpdateDate(DateTime date)
{
IList<ScheduleOrder?> scheduleOrders =
(await Task.FromResult(ScheduleOrderQueries.GetEntitiesByDate(Context, date))).ToList();
return Mapper.Map<IEnumerable<ScheduleOrderDto>>(scheduleOrders);
}
}
}

View File

@@ -0,0 +1,73 @@
using AutoMapper;
using AutoMapper.Internal;
using FaKrosnoEfDataModel.Dtos;
using Microsoft.EntityFrameworkCore;
using System.Reflection;
namespace FaKrosnoEfDataModel.Services
{
public class ServiceBase<T> where T : DtoBase
{
protected readonly FaKrosnoDbContext Context;
protected readonly IMapper Mapper;
protected readonly Type EntityType;
public ServiceBase(FaKrosnoDbContext context, IMapper mapper)
{
Context = context;
Mapper = mapper;
EntityType = FindEntityTypeForDto(typeof(T));
}
public virtual async Task<T?> GetById(int id)
{
object? entity = await Context.FindAsync(EntityType, id);
if (entity != null)
{
return (T)Mapper.Map(entity, entity.GetType(), typeof(T));
}
return default;
}
public virtual async Task<IEnumerable<T>> GetAll()
{
MethodInfo? setMethod =
typeof(DbContext).GetMethod("Set", Array.Empty<Type>())?.MakeGenericMethod(EntityType);
IQueryable? dbSet = setMethod?.Invoke(Context, null) as IQueryable;
if (dbSet == null)
{
throw new InvalidOperationException("Failed to get DbSet for entity type.");
}
IList<object> entities = await Task.Run(() => dbSet.Cast<object>().ToListAsync());
return entities.Select(e => (T)Mapper.Map(e, e.GetType(), typeof(T)));
}
private Type FindEntityTypeForDto(Type dtoType)
{
IGlobalConfiguration? internalApi = Mapper.ConfigurationProvider.Internal();
TypeMap map = internalApi.FindTypeMapFor(dtoType, null);
if (map != null)
{
return map.DestinationType;
}
foreach (var typeMap in internalApi.GetAllTypeMaps())
{
if (typeMap.SourceType == dtoType)
{
return typeMap.DestinationType;
}
}
throw new InvalidOperationException($"No mapping found for DTO type: {dtoType.Name}");
}
}
}

View File

@@ -0,0 +1,5 @@
{
"ConnectionStrings": {
"FaKrosnoConnection": "Server=192.168.0.7;Database=fakrosnotest;User Id=sa;Password=Tetum#2021!;TrustServerCertificate=true"
}
}