70 lines
2.0 KiB
C#
70 lines
2.0 KiB
C#
namespace DocuMed.Repository.Repositories.Base
|
|
{
|
|
public class WriteRepository<T>(ApplicationContext dbContext)
|
|
: Repository<T>(dbContext), IDisposable, IWriteRepository<T>
|
|
where T : class, IApiEntity
|
|
{
|
|
public void Dispose()
|
|
{
|
|
DbContext?.Dispose();
|
|
}
|
|
|
|
public void HardDelete(T entity)
|
|
{
|
|
AssertExtensions.NotNull(entity, nameof(entity));
|
|
Entities.Remove(entity);
|
|
}
|
|
|
|
public virtual void Add(T entity)
|
|
{
|
|
AssertExtensions.NotNull(entity, nameof(entity));
|
|
Entities.Add(entity);
|
|
}
|
|
|
|
public virtual void AddRange(IEnumerable<T> entities)
|
|
{
|
|
AssertExtensions.NotNull(entities, nameof(entities));
|
|
Entities.AddRange(entities);
|
|
}
|
|
|
|
public virtual void Update(T entity)
|
|
{
|
|
AssertExtensions.NotNull(entity, nameof(entity));
|
|
Detach(entity);
|
|
Entities.Update(entity);
|
|
}
|
|
|
|
public virtual void UpdateRange(IEnumerable<T> entities)
|
|
{
|
|
AssertExtensions.NotNull(entities, nameof(entities));
|
|
Entities.UpdateRange(entities);
|
|
}
|
|
|
|
public virtual void Delete(T entity)
|
|
{
|
|
AssertExtensions.NotNull(entity, nameof(entity));
|
|
Entities.Remove(entity);
|
|
}
|
|
|
|
public virtual void DeleteRange(IEnumerable<T> entities)
|
|
{
|
|
AssertExtensions.NotNull(entities, nameof(entities));
|
|
Entities.RemoveRange(entities);
|
|
}
|
|
|
|
public virtual void Detach(T entity)
|
|
{
|
|
AssertExtensions.NotNull(entity, nameof(entity));
|
|
var entry = DbContext.Entry(entity);
|
|
if (entry != null)
|
|
entry.State = EntityState.Detached;
|
|
}
|
|
|
|
public virtual void Attach(T entity)
|
|
{
|
|
AssertExtensions.NotNull(entity, nameof(entity));
|
|
if (DbContext.Entry(entity).State == EntityState.Detached)
|
|
Entities.Attach(entity);
|
|
}
|
|
}
|
|
} |