Add conditional compilation for .NET Framework support

Introduce conditional compilation directives in the IRepository interface to support .NET Framework. Update method signatures to conditionally include the `public` access modifier for compatibility across frameworks. Adjust the Entity method to remove the `public` modifier, enhancing flexibility while maintaining existing functionality.
This commit is contained in:
Developer 02 2025-09-30 17:47:24 +02:00
parent 74a625a863
commit d4d1d2b69f

View File

@ -1,50 +1,105 @@
using DigitalData.Core.Abstractions.Interfaces; using DigitalData.Core.Abstractions.Interfaces;
using System.Linq.Expressions; using System.Linq.Expressions;
#if NETFRAMEWORK
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using System.Linq;
#endif
namespace DigitalData.Core.Abstraction.Application.Repository; namespace DigitalData.Core.Abstraction.Application.Repository
#if NET
;
#elif NETFRAMEWORK
{
#endif
public interface IRepository<TEntity> public interface IRepository<TEntity>
{ {
#region Create #region Create
public Task<TEntity> CreateAsync(TEntity entity, CancellationToken cancel = default); #if NET
public
#endif
Task<TEntity> CreateAsync(TEntity entity, CancellationToken cancel = default);
public Task<IEnumerable<TEntity>> CreateAsync(IEnumerable<TEntity> entities, CancellationToken cancel = default); #if NET
public
#endif
Task<IEnumerable<TEntity>> CreateAsync(IEnumerable<TEntity> entities, CancellationToken cancel = default);
public Task<TEntity> CreateAsync<TDto>(TDto dto, CancellationToken cancel = default); #if NET
public
#endif
Task<TEntity> CreateAsync<TDto>(TDto dto, CancellationToken cancel = default);
public Task<IEnumerable<TEntity>> CreateAsync<TDto>(IEnumerable<TDto> dtos, CancellationToken cancel = default); #if NET
public
#endif
Task<IEnumerable<TEntity>> CreateAsync<TDto>(IEnumerable<TDto> dtos, CancellationToken cancel = default);
#endregion Create #endregion Create
#region Read #region Read
public IQueryable<TEntity> Where(Expression<Func<TEntity, bool>> expression); #if NET
public
#endif
IQueryable<TEntity> Where(Expression<Func<TEntity, bool>> expression);
public IEnumerable<TEntity> GetAll(); #if NET
public
#endif
IEnumerable<TEntity> GetAll();
public Task<IEnumerable<TEntity>> GetAllAsync(CancellationToken cancel = default); #if NET
public
#endif
Task<IEnumerable<TEntity>> GetAllAsync(CancellationToken cancel = default);
#endregion Read #endregion Read
#region Update #region Update
public Task UpdateAsync<TDto>(TDto dto, Expression<Func<TEntity, bool>> expression, CancellationToken cancel = default); #if NET
public
#endif
Task UpdateAsync<TDto>(TDto dto, Expression<Func<TEntity, bool>> expression, CancellationToken cancel = default);
public Task UpdateAsync<TDto>(TDto dto, Func<IQueryable<TEntity>, IQueryable<TEntity>> query, CancellationToken cancel = default); #if NET
public
#endif
Task UpdateAsync<TDto>(TDto dto, Func<IQueryable<TEntity>, IQueryable<TEntity>> query, CancellationToken cancel = default);
#endregion Update #endregion Update
#region Delete #region Delete
public Task DeleteAsync(Expression<Func<TEntity, bool>> expression, CancellationToken cancel = default); #if NET
public
#endif
Task DeleteAsync(Expression<Func<TEntity, bool>> expression, CancellationToken cancel = default);
public Task DeleteAsync(Func<IQueryable<TEntity>, IQueryable<TEntity>> query, CancellationToken cancel = default); #if NET
public
#endif
Task DeleteAsync(Func<IQueryable<TEntity>, IQueryable<TEntity>> query, CancellationToken cancel = default);
#endregion Delete #endregion Delete
#region Obsolete #region Obsolete
[Obsolete("Use CreateAsync, UpdateAsync or DeleteAsync")] [Obsolete("Use CreateAsync, UpdateAsync or DeleteAsync")]
public IQueryable<TEntity> Read(); #if NET
public
#endif
IQueryable<TEntity> Read();
[Obsolete("Use IRepository<TEntity>.Where")] [Obsolete("Use IRepository<TEntity>.Where")]
public IQueryable<TEntity> ReadOnly(); #if NET
public
#endif
IQueryable<TEntity> ReadOnly();
#endregion #endregion
} }
public interface IRepository public interface IRepository
{ {
public IRepository<TEntity> Entity<TEntity>() where TEntity : IEntity; IRepository<TEntity> Entity<TEntity>() where TEntity : IEntity;
} }
#if NETFRAMEWORK
}
#endif