Browse Source

Refactor auditing.

pull/395/head
Halil ibrahim Kalkan 8 years ago
parent
commit
61b2baf671
  1. 1
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Auditing/AbpAuditActionFilter.cs
  2. 1
      framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AbpAuditingModule.cs
  3. 4
      framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditPropertySetter.cs
  4. 2
      framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditingContractResolver.cs
  5. 39
      framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditingHelper.cs
  6. 2
      framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditingInterceptor.cs
  7. 21
      framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditingInterceptorRegistrar.cs
  8. 21
      framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/IAudited.cs
  9. 19
      framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/IAuditedObject.cs
  10. 1
      framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/IAuditingEnabled.cs
  11. 4
      framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/IAuditingStore.cs
  12. 6
      framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/ICreationAuditedObject.cs
  13. 6
      framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/IDeletionAuditedObject.cs
  14. 19
      framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/IFullAudited.cs
  15. 19
      framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/IFullAuditedObject.cs
  16. 6
      framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/IModificationAuditedObject.cs
  17. 6
      framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/NullClientInfoProvider.cs
  18. 4
      framework/src/Volo.Abp.Data/Volo/Abp/Data/ISoftDelete.cs
  19. 8
      framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Dtos/AuditedEntityDto.cs
  20. 8
      framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Dtos/AuditedEntityWithUserDto.cs
  21. 8
      framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Dtos/CreationAuditedEntityDto.cs
  22. 8
      framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Dtos/CreationAuditedEntityWithUserDto.cs
  23. 8
      framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Dtos/FullAuditedEntityDto.cs
  24. 8
      framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Dtos/FullAuditedEntityWithUserDto.cs
  25. 8
      framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/AuditedAggregateRoot.cs
  26. 8
      framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/AuditedAggregateRootWithUser.cs
  27. 8
      framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/AuditedEntity.cs
  28. 8
      framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/AuditedEntityWithUser.cs
  29. 8
      framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/CreationAuditedAggregateRoot.cs
  30. 8
      framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/CreationAuditedAggregateRootWithUser.cs
  31. 8
      framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/CreationAuditedEntity.cs
  32. 8
      framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/CreationAuditedEntityWithUser.cs
  33. 8
      framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/FullAuditedAggregateRoot.cs
  34. 8
      framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/FullAuditedAggregateRootWithUser.cs
  35. 8
      framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/FullAuditedEntity.cs
  36. 8
      framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/FullAuditedEntityWithUser.cs
  37. 18
      framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/Modeling/AbpEntityTypeBuilderExtensions.cs
  38. 2
      framework/test/Volo.Abp.Auditing.Tests/Volo/Abp/Auditing/AuditPropertySetterTestBase.cs

1
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Auditing/AbpAuditActionFilter.cs

@ -56,7 +56,6 @@ namespace Volo.Abp.AspNetCore.Mvc.Auditing
{
stopwatch.Stop();
auditInfo.ExecutionDuration = Convert.ToInt32(stopwatch.Elapsed.TotalMilliseconds);
auditInfo.ServiceName = "AbpAuditActionFilter->" + auditInfo.ServiceName;
await _auditingHelper.SaveAsync(auditInfo);
}
}

1
framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AbpAuditingModule.cs

@ -7,7 +7,6 @@ using Volo.Abp.Timing;
namespace Volo.Abp.Auditing
{
//TODO: Can we remove AbpDataModule dependency since it only contains ISoftDelete related to auditing module!
[DependsOn(
typeof(AbpDataModule),
typeof(AbpTimingModule),

4
framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditPropertySetter.cs

@ -105,7 +105,7 @@ namespace Volo.Abp.Auditing
private void SetLastModifierId(object targetObject)
{
if (!(targetObject is IModificationAudited modificationAuditedObject))
if (!(targetObject is IModificationAuditedObject modificationAuditedObject))
{
return;
}
@ -150,7 +150,7 @@ namespace Volo.Abp.Auditing
private void SetDeleterId(object targetObject)
{
if (!(targetObject is IDeletionAudited deletionAuditedObject))
if (!(targetObject is IDeletionAuditedObject deletionAuditedObject))
{
return;
}

2
framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditingContractResolver.cs

@ -17,7 +17,7 @@ namespace Volo.Abp.Auditing
protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
{
JsonProperty property = base.CreateProperty(member, memberSerialization);
var property = base.CreateProperty(member, memberSerialization);
if (member.IsDefined(typeof(DisableAuditingAttribute)) || member.IsDefined(typeof(JsonIgnoreAttribute)))
{

39
framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditingHelper.cs

@ -4,7 +4,6 @@ using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.Extensions.Options;
using Volo.Abp.DependencyInjection;
using Volo.Abp.MultiTenancy;
@ -15,9 +14,8 @@ namespace Volo.Abp.Auditing
{
public class AuditingHelper : IAuditingHelper, ITransientDependency
{
public ILogger<AuditingHelper> Logger { get; set; }
public IAuditingStore AuditingStore { get; set; }
protected ILogger<AuditingHelper> Logger { get; }
protected IAuditingStore AuditingStore { get; }
protected ICurrentUser CurrentUser { get; }
protected ICurrentTenant CurrentTenant { get; }
protected IClock Clock { get; }
@ -31,7 +29,9 @@ namespace Volo.Abp.Auditing
IOptions<AuditingOptions> options,
ICurrentUser currentUser,
ICurrentTenant currentTenant,
IClock clock)
IClock clock,
IAuditingStore auditingStore,
ILogger<AuditingHelper> logger)
{
AuditInfoProvider = auditInfoProvider;
Options = options.Value;
@ -39,11 +39,12 @@ namespace Volo.Abp.Auditing
CurrentUser = currentUser;
CurrentTenant = currentTenant;
Clock = clock;
AuditingStore = auditingStore;
Logger = NullLogger<AuditingHelper>.Instance;
Logger = logger;
}
public bool ShouldSaveAudit(MethodInfo methodInfo, bool defaultValue = false)
public virtual bool ShouldSaveAudit(MethodInfo methodInfo, bool defaultValue = false)
{
if (!Options.IsEnabled)
{
@ -78,17 +79,7 @@ namespace Volo.Abp.Auditing
var classType = methodInfo.DeclaringType;
if (classType != null)
{
if (classType.IsDefined(typeof(AuditedAttribute), true))
{
return true;
}
if (classType.IsDefined(typeof(DisableAuditingAttribute), true))
{
return false;
}
if (typeof(IAuditingEnabled).IsAssignableFrom(classType))
if (AuditingInterceptorRegistrar.ShouldAuditTypeByDefault(classType))
{
return true;
}
@ -97,12 +88,12 @@ namespace Volo.Abp.Auditing
return defaultValue;
}
public AuditInfo CreateAuditInfo(Type type, MethodInfo method, object[] arguments)
public virtual AuditInfo CreateAuditInfo(Type type, MethodInfo method, object[] arguments)
{
return CreateAuditInfo(type, method, CreateArgumentsDictionary(method, arguments));
}
public AuditInfo CreateAuditInfo(Type type, MethodInfo method, IDictionary<string, object> arguments)
public virtual AuditInfo CreateAuditInfo(Type type, MethodInfo method, IDictionary<string, object> arguments)
{
var auditInfo = new AuditInfo
{
@ -130,17 +121,17 @@ namespace Volo.Abp.Auditing
return auditInfo;
}
public void Save(AuditInfo auditInfo)
public virtual void Save(AuditInfo auditInfo)
{
AuditingStore.Save(auditInfo);
}
public async Task SaveAsync(AuditInfo auditInfo)
public virtual async Task SaveAsync(AuditInfo auditInfo)
{
await AuditingStore.SaveAsync(auditInfo);
}
private string SerializeConvertArguments(IDictionary<string, object> arguments)
protected virtual string SerializeConvertArguments(IDictionary<string, object> arguments)
{
try
{
@ -172,7 +163,7 @@ namespace Volo.Abp.Auditing
}
}
private static Dictionary<string, object> CreateArgumentsDictionary(MethodInfo method, object[] arguments)
protected virtual Dictionary<string, object> CreateArgumentsDictionary(MethodInfo method, object[] arguments)
{
var parameters = method.GetParameters();
var dictionary = new Dictionary<string, object>();

2
framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditingInterceptor.cs

@ -47,7 +47,6 @@ namespace Volo.Abp.Auditing
{
stopwatch.Stop();
auditInfo.ExecutionDuration = Convert.ToInt32(stopwatch.Elapsed.TotalMilliseconds);
auditInfo.ServiceName = "AuditingInterceptor->" + auditInfo.ServiceName;
_auditingHelper.Save(auditInfo);
}
}
@ -84,7 +83,6 @@ namespace Volo.Abp.Auditing
{
stopwatch.Stop();
auditInfo.ExecutionDuration = Convert.ToInt32(stopwatch.Elapsed.TotalMilliseconds);
auditInfo.ServiceName = "AuditingInterceptor->" + auditInfo.ServiceName;
await _auditingHelper.SaveAsync(auditInfo);
}
}

21
framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditingInterceptorRegistrar.cs

@ -16,22 +16,33 @@ namespace Volo.Abp.Auditing
private static bool ShouldIntercept(Type type)
{
if (type.IsDefined(typeof(AuditedAttribute), true))
if (ShouldAuditTypeByDefault(type))
{
return true;
}
if (type.IsDefined(typeof(DisableAuditingAttribute), true))
if (type.GetMethods().Any(m => m.IsDefined(typeof(AuditedAttribute), true)))
{
return false;
return true;
}
if (typeof(IAuditingEnabled).IsAssignableFrom(type))
return false;
}
//TODO: Move to a better place
internal static bool ShouldAuditTypeByDefault(Type type)
{
if (type.IsDefined(typeof(AuditedAttribute), true))
{
return true;
}
if (type.GetMethods().Any(m => m.IsDefined(typeof(AuditedAttribute), true)))
if (type.IsDefined(typeof(DisableAuditingAttribute), true))
{
return false;
}
if (typeof(IAuditingEnabled).IsAssignableFrom(type))
{
return true;
}

21
framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/IAudited.cs

@ -1,21 +0,0 @@
namespace Volo.Abp.Auditing
{
//TODO: Rename IAudited to IAuditedObject (also for ICreationAudited, IDeletionAudited... and so on)
/// <summary>
/// This interface can be implemented to add standard auditing properties to a class.
/// </summary>
public interface IAudited : ICreationAudited, IModificationAudited
{
}
/// <summary>
/// Extends <see cref="IAudited"/> to add user navigation properties.
/// </summary>
/// <typeparam name="TUser">Type of the user</typeparam>
public interface IAudited<TUser> : IAudited, ICreationAudited<TUser>, IModificationAudited<TUser>
{
}
}

19
framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/IAuditedObject.cs

@ -0,0 +1,19 @@
namespace Volo.Abp.Auditing
{
/// <summary>
/// This interface can be implemented to add standard auditing properties to a class.
/// </summary>
public interface IAuditedObject : ICreationAuditedObject, IModificationAuditedObject
{
}
/// <summary>
/// Extends <see cref="IAuditedObject"/> to add user navigation properties.
/// </summary>
/// <typeparam name="TUser">Type of the user</typeparam>
public interface IAuditedObject<TUser> : IAuditedObject, ICreationAuditedObject<TUser>, IModificationAuditedObject<TUser>
{
}
}

1
framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/IAuditingEnabled.cs

@ -2,5 +2,6 @@
{
public interface IAuditingEnabled
{
}
}

4
framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/IAuditingStore.cs

@ -4,10 +4,6 @@ namespace Volo.Abp.Auditing
{
public interface IAuditingStore
{
/// <summary>
/// Should save audits to a persistent store.
/// </summary>
/// <param name="auditInfo">Audit informations</param>
Task SaveAsync(AuditInfo auditInfo);
}
}

6
framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/ICreationAudited.cs → framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/ICreationAuditedObject.cs

@ -3,16 +3,16 @@ namespace Volo.Abp.Auditing
/// <summary>
/// This interface can be implemented to store creation information (who and when created).
/// </summary>
public interface ICreationAudited : IHasCreationTime, IMayHaveCreator
public interface ICreationAuditedObject : IHasCreationTime, IMayHaveCreator
{
}
/// <summary>
/// Adds navigation property (object reference) to <see cref="ICreationAudited"/> interface.
/// Adds navigation property (object reference) to <see cref="ICreationAuditedObject"/> interface.
/// </summary>
/// <typeparam name="TCreator">Type of the user</typeparam>
public interface ICreationAudited<TCreator> : ICreationAudited, IMayHaveCreator<TCreator>
public interface ICreationAuditedObject<TCreator> : ICreationAuditedObject, IMayHaveCreator<TCreator>
{
}

6
framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/IDeletionAudited.cs → framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/IDeletionAuditedObject.cs

@ -5,7 +5,7 @@ namespace Volo.Abp.Auditing
/// <summary>
/// This interface can be implemented to store deletion information (who delete and when deleted).
/// </summary>
public interface IDeletionAudited : IHasDeletionTime
public interface IDeletionAuditedObject : IHasDeletionTime
{
/// <summary>
/// Id of the deleter user.
@ -14,10 +14,10 @@ namespace Volo.Abp.Auditing
}
/// <summary>
/// Extends <see cref="IDeletionAudited"/> to add user navigation propery.
/// Extends <see cref="IDeletionAuditedObject"/> to add user navigation propery.
/// </summary>
/// <typeparam name="TUser">Type of the user</typeparam>
public interface IDeletionAudited<TUser> : IDeletionAudited
public interface IDeletionAuditedObject<TUser> : IDeletionAuditedObject
{
/// <summary>
/// Reference to the deleter user.

19
framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/IFullAudited.cs

@ -1,19 +0,0 @@
namespace Volo.Abp.Auditing
{
/// <summary>
/// This interface adds <see cref="IDeletionAudited"/> to <see cref="IAudited"/>.
/// </summary>
public interface IFullAudited : IAudited, IDeletionAudited
{
}
/// <summary>
/// Adds user navigation properties to <see cref="IFullAudited"/> interface for user.
/// </summary>
/// <typeparam name="TUser">Type of the user</typeparam>
public interface IFullAudited<TUser> : IAudited<TUser>, IFullAudited, IDeletionAudited<TUser>
{
}
}

19
framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/IFullAuditedObject.cs

@ -0,0 +1,19 @@
namespace Volo.Abp.Auditing
{
/// <summary>
/// This interface adds <see cref="IDeletionAuditedObject"/> to <see cref="IAuditedObject"/>.
/// </summary>
public interface IFullAuditedObject : IAuditedObject, IDeletionAuditedObject
{
}
/// <summary>
/// Adds user navigation properties to <see cref="IFullAuditedObject"/> interface for user.
/// </summary>
/// <typeparam name="TUser">Type of the user</typeparam>
public interface IFullAuditedObject<TUser> : IAuditedObject<TUser>, IFullAuditedObject, IDeletionAuditedObject<TUser>
{
}
}

6
framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/IModificationAudited.cs → framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/IModificationAuditedObject.cs

@ -5,7 +5,7 @@ namespace Volo.Abp.Auditing
/// <summary>
/// This interface can be implemented to store modification information (who and when modified lastly).
/// </summary>
public interface IModificationAudited : IHasModificationTime
public interface IModificationAuditedObject : IHasModificationTime
{
/// <summary>
/// Last modifier user for this entity.
@ -14,10 +14,10 @@ namespace Volo.Abp.Auditing
}
/// <summary>
/// Adds navigation properties to <see cref="IModificationAudited"/> interface for a user.
/// Adds navigation properties to <see cref="IModificationAuditedObject"/> interface for a user.
/// </summary>
/// <typeparam name="TUser">Type of the user</typeparam>
public interface IModificationAudited<TUser> : IModificationAudited
public interface IModificationAuditedObject<TUser> : IModificationAuditedObject
{
/// <summary>
/// Reference to the last modifier user of this entity.

6
framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/NullClientInfoProvider.cs

@ -2,13 +2,13 @@
namespace Volo.Abp.Auditing
{
//TODO: Implement on aspnet core layer
[Dependency(TryRegister = true)]
public class NullClientInfoProvider : IClientInfoProvider, ISingletonDependency
{
public static NullClientInfoProvider Instance { get; } = new NullClientInfoProvider();
public string BrowserInfo => null;
public string ClientIpAddress => null;
public string ComputerName => null;
}
}

4
framework/src/Volo.Abp.Data/Volo/Abp/ISoftDelete.cs → framework/src/Volo.Abp.Data/Volo/Abp/Data/ISoftDelete.cs

@ -1,4 +1,4 @@
namespace Volo.Abp
namespace Volo.Abp //TODO: Change namespace to Volo.Abp.Data
{
/// <summary>
/// Used to standardize soft deleting entities.
@ -6,7 +6,7 @@
/// marked as IsDeleted = true in the database,
/// but can not be retrieved to the application normally.
/// </summary>
public interface ISoftDelete //TODO: Move to another assembly?
public interface ISoftDelete
{
/// <summary>
/// Used to mark an Entity as 'Deleted'.

8
framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Dtos/AuditedEntityDto.cs

@ -4,10 +4,10 @@ using Volo.Abp.Auditing;
namespace Volo.Abp.Application.Dtos
{
/// <summary>
/// This class can be inherited by DTO classes to implement <see cref="IAudited"/> interface.
/// This class can be inherited by DTO classes to implement <see cref="IAuditedObject"/> interface.
/// </summary>
[Serializable]
public abstract class AuditedEntityDto : CreationAuditedEntityDto, IAudited
public abstract class AuditedEntityDto : CreationAuditedEntityDto, IAuditedObject
{
/// <inheritdoc />
public DateTime? LastModificationTime { get; set; }
@ -17,11 +17,11 @@ namespace Volo.Abp.Application.Dtos
}
/// <summary>
/// This class can be inherited by DTO classes to implement <see cref="IAudited"/> interface.
/// This class can be inherited by DTO classes to implement <see cref="IAuditedObject"/> interface.
/// </summary>
/// <typeparam name="TPrimaryKey">Type of primary key</typeparam>
[Serializable]
public abstract class AuditedEntityDto<TPrimaryKey> : CreationAuditedEntityDto<TPrimaryKey>, IAudited
public abstract class AuditedEntityDto<TPrimaryKey> : CreationAuditedEntityDto<TPrimaryKey>, IAuditedObject
{
/// <inheritdoc />
public DateTime? LastModificationTime { get; set; }

8
framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Dtos/AuditedEntityWithUserDto.cs

@ -4,11 +4,11 @@ using Volo.Abp.Auditing;
namespace Volo.Abp.Application.Dtos
{
/// <summary>
/// This class can be inherited by DTO classes to implement <see cref="IAudited"/> interface.
/// This class can be inherited by DTO classes to implement <see cref="IAuditedObject"/> interface.
/// </summary>
/// <typeparam name="TUserDto">Type of the User DTO</typeparam>
[Serializable]
public abstract class AuditedEntityWithUserDto<TUserDto> : AuditedEntityDto, IAudited<TUserDto>
public abstract class AuditedEntityWithUserDto<TUserDto> : AuditedEntityDto, IAuditedObject<TUserDto>
{
/// <inheritdoc />
public TUserDto Creator { get; set; }
@ -18,12 +18,12 @@ namespace Volo.Abp.Application.Dtos
}
/// <summary>
/// This class can be inherited by DTO classes to implement <see cref="IAudited"/> interface.
/// This class can be inherited by DTO classes to implement <see cref="IAuditedObject"/> interface.
/// </summary>
/// <typeparam name="TPrimaryKey">Type of primary key</typeparam>
/// <typeparam name="TUserDto">Type of the User DTO</typeparam>
[Serializable]
public abstract class AuditedEntityWithUserDto<TPrimaryKey, TUserDto> : AuditedEntityDto<TPrimaryKey>, IAudited<TUserDto>
public abstract class AuditedEntityWithUserDto<TPrimaryKey, TUserDto> : AuditedEntityDto<TPrimaryKey>, IAuditedObject<TUserDto>
{
/// <inheritdoc />
public TUserDto Creator { get; set; }

8
framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Dtos/CreationAuditedEntityDto.cs

@ -4,10 +4,10 @@ using Volo.Abp.Auditing;
namespace Volo.Abp.Application.Dtos
{
/// <summary>
/// This class can be inherited by DTO classes to implement <see cref="ICreationAudited"/> interface.
/// This class can be inherited by DTO classes to implement <see cref="ICreationAuditedObject"/> interface.
/// </summary>
[Serializable]
public abstract class CreationAuditedEntityDto : EntityDto, ICreationAudited
public abstract class CreationAuditedEntityDto : EntityDto, ICreationAuditedObject
{
/// <inheritdoc />
public DateTime CreationTime { get; set; }
@ -17,11 +17,11 @@ namespace Volo.Abp.Application.Dtos
}
/// <summary>
/// This class can be inherited by DTO classes to implement <see cref="ICreationAudited"/> interface.
/// This class can be inherited by DTO classes to implement <see cref="ICreationAuditedObject"/> interface.
/// </summary>
/// <typeparam name="TPrimaryKey">Type of primary key</typeparam>
[Serializable]
public abstract class CreationAuditedEntityDto<TPrimaryKey> : EntityDto<TPrimaryKey>, ICreationAudited
public abstract class CreationAuditedEntityDto<TPrimaryKey> : EntityDto<TPrimaryKey>, ICreationAuditedObject
{
/// <inheritdoc />
public DateTime CreationTime { get; set; }

8
framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Dtos/CreationAuditedEntityWithUserDto.cs

@ -4,22 +4,22 @@ using Volo.Abp.Auditing;
namespace Volo.Abp.Application.Dtos
{
/// <summary>
/// This class can be inherited by DTO classes to implement <see cref="ICreationAudited{TUser}"/> interface.
/// This class can be inherited by DTO classes to implement <see cref="ICreationAuditedObject{TCreator}"/> interface.
/// </summary>
/// <typeparam name="TUserDto">Type of the User DTO</typeparam>
[Serializable]
public abstract class CreationAuditedEntityWithUserDto<TUserDto> : CreationAuditedEntityDto, ICreationAudited<TUserDto>
public abstract class CreationAuditedEntityWithUserDto<TUserDto> : CreationAuditedEntityDto, ICreationAuditedObject<TUserDto>
{
public TUserDto Creator { get; set; }
}
/// <summary>
/// This class can be inherited by DTO classes to implement <see cref="ICreationAudited{TUser}"/> interface.
/// This class can be inherited by DTO classes to implement <see cref="ICreationAuditedObjectObject{TCreator}"/> interface.
/// </summary>
/// <typeparam name="TPrimaryKey">Type of primary key</typeparam>
/// <typeparam name="TUserDto">Type of the User DTO</typeparam>
[Serializable]
public abstract class CreationAuditedEntityWithUserDto<TPrimaryKey, TUserDto> : CreationAuditedEntityDto<TPrimaryKey>, ICreationAudited<TUserDto>
public abstract class CreationAuditedEntityWithUserDto<TPrimaryKey, TUserDto> : CreationAuditedEntityDto<TPrimaryKey>, ICreationAuditedObject<TUserDto>
{
public TUserDto Creator { get; set; }
}

8
framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Dtos/FullAuditedEntityDto.cs

@ -4,10 +4,10 @@ using Volo.Abp.Auditing;
namespace Volo.Abp.Application.Dtos
{
/// <summary>
/// This class can be inherited by DTO classes to implement <see cref="IFullAudited"/> interface.
/// This class can be inherited by DTO classes to implement <see cref="IFullAuditedObject"/> interface.
/// </summary>
[Serializable]
public abstract class FullAuditedEntityDto : AuditedEntityDto, IFullAudited
public abstract class FullAuditedEntityDto : AuditedEntityDto, IFullAuditedObject
{
/// <inheritdoc />
public bool IsDeleted { get; set; }
@ -20,11 +20,11 @@ namespace Volo.Abp.Application.Dtos
}
/// <summary>
/// This class can be inherited by DTO classes to implement <see cref="IFullAudited"/> interface.
/// This class can be inherited by DTO classes to implement <see cref="IFullAuditedObject"/> interface.
/// </summary>
/// <typeparam name="TPrimaryKey">Type of primary key</typeparam>
[Serializable]
public abstract class FullAuditedEntityDto<TPrimaryKey> : AuditedEntityDto<TPrimaryKey>, IFullAudited
public abstract class FullAuditedEntityDto<TPrimaryKey> : AuditedEntityDto<TPrimaryKey>, IFullAuditedObject
{
/// <inheritdoc />
public bool IsDeleted { get; set; }

8
framework/src/Volo.Abp.Ddd.Application/Volo/Abp/Application/Dtos/FullAuditedEntityWithUserDto.cs

@ -4,11 +4,11 @@ using Volo.Abp.Auditing;
namespace Volo.Abp.Application.Dtos
{
/// <summary>
/// This class can be inherited by DTO classes to implement <see cref="IFullAudited{TUser}"/> interface.
/// This class can be inherited by DTO classes to implement <see cref="IFullAuditedObjectObject{TUser}"/> interface.
/// </summary>
/// <typeparam name="TUserDto">Type of the User</typeparam>
[Serializable]
public abstract class FullAuditedEntityWithUserDto<TUserDto> : FullAuditedEntityDto, IFullAudited<TUserDto>
public abstract class FullAuditedEntityWithUserDto<TUserDto> : FullAuditedEntityDto, IFullAuditedObject<TUserDto>
{
/// <inheritdoc />
public TUserDto Creator { get; set; }
@ -21,12 +21,12 @@ namespace Volo.Abp.Application.Dtos
}
/// <summary>
/// This class can be inherited by DTO classes to implement <see cref="IFullAudited{TUser}"/> interface.
/// This class can be inherited by DTO classes to implement <see cref="IFullAuditedObjectObject{TUser}"/> interface.
/// </summary>
/// <typeparam name="TPrimaryKey">Type of primary key</typeparam>
/// <typeparam name="TUserDto">Type of the User</typeparam>
[Serializable]
public abstract class FullAuditedEntityWithUserDto<TPrimaryKey, TUserDto> : FullAuditedEntityDto<TPrimaryKey>, IFullAudited<TUserDto>
public abstract class FullAuditedEntityWithUserDto<TPrimaryKey, TUserDto> : FullAuditedEntityDto<TPrimaryKey>, IFullAuditedObject<TUserDto>
{
/// <inheritdoc />
public TUserDto Creator { get; set; }

8
framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/AuditedAggregateRoot.cs

@ -4,10 +4,10 @@ using Volo.Abp.Auditing;
namespace Volo.Abp.Domain.Entities.Auditing
{
/// <summary>
/// This class can be used to simplify implementing <see cref="IAudited"/> for aggregate roots.
/// This class can be used to simplify implementing <see cref="IAuditedObject"/> for aggregate roots.
/// </summary>
[Serializable]
public abstract class AuditedAggregateRoot : CreationAuditedAggregateRoot, IAudited
public abstract class AuditedAggregateRoot : CreationAuditedAggregateRoot, IAuditedObject
{
/// <inheritdoc />
public virtual DateTime? LastModificationTime { get; set; }
@ -17,11 +17,11 @@ namespace Volo.Abp.Domain.Entities.Auditing
}
/// <summary>
/// This class can be used to simplify implementing <see cref="IAudited"/> for aggregate roots.
/// This class can be used to simplify implementing <see cref="IAuditedObject"/> for aggregate roots.
/// </summary>
/// <typeparam name="TKey">Type of the primary key of the entity</typeparam>
[Serializable]
public abstract class AuditedAggregateRoot<TKey> : CreationAuditedAggregateRoot<TKey>, IAudited
public abstract class AuditedAggregateRoot<TKey> : CreationAuditedAggregateRoot<TKey>, IAuditedObject
{
/// <inheritdoc />
public virtual DateTime? LastModificationTime { get; set; }

8
framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/AuditedAggregateRootWithUser.cs

@ -4,11 +4,11 @@ using Volo.Abp.Auditing;
namespace Volo.Abp.Domain.Entities.Auditing
{
/// <summary>
/// This class can be used to simplify implementing <see cref="IAudited{TUser}"/> for aggregate roots.
/// This class can be used to simplify implementing <see cref="IAuditedObjectObject{TUser}"/> for aggregate roots.
/// </summary>
/// <typeparam name="TUser">Type of the user</typeparam>
[Serializable]
public abstract class AuditedAggregateRootWithUser<TUser> : AuditedAggregateRoot, IAudited<TUser>
public abstract class AuditedAggregateRootWithUser<TUser> : AuditedAggregateRoot, IAuditedObject<TUser>
where TUser : IEntity<long>
{
/// <inheritdoc />
@ -19,12 +19,12 @@ namespace Volo.Abp.Domain.Entities.Auditing
}
/// <summary>
/// This class can be used to simplify implementing <see cref="IAudited{TUser}"/> for aggregate roots.
/// This class can be used to simplify implementing <see cref="IAuditedObjectObject{TUser}"/> for aggregate roots.
/// </summary>
/// <typeparam name="TKey">Type of the primary key of the entity</typeparam>
/// <typeparam name="TUser">Type of the user</typeparam>
[Serializable]
public abstract class AuditedAggregateRootWithUser<TKey, TUser> : AuditedAggregateRoot<TKey>, IAudited<TUser>
public abstract class AuditedAggregateRootWithUser<TKey, TUser> : AuditedAggregateRoot<TKey>, IAuditedObject<TUser>
where TUser : IEntity<long>
{
/// <inheritdoc />

8
framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/AuditedEntity.cs

@ -4,10 +4,10 @@ using Volo.Abp.Auditing;
namespace Volo.Abp.Domain.Entities.Auditing
{
/// <summary>
/// This class can be used to simplify implementing <see cref="IAudited"/>.
/// This class can be used to simplify implementing <see cref="IAuditedObject"/>.
/// </summary>
[Serializable]
public abstract class AuditedEntity : CreationAuditedEntity, IAudited
public abstract class AuditedEntity : CreationAuditedEntity, IAuditedObject
{
/// <inheritdoc />
public virtual DateTime? LastModificationTime { get; set; }
@ -17,11 +17,11 @@ namespace Volo.Abp.Domain.Entities.Auditing
}
/// <summary>
/// This class can be used to simplify implementing <see cref="IAudited"/>.
/// This class can be used to simplify implementing <see cref="IAuditedObject"/>.
/// </summary>
/// <typeparam name="TKey">Type of the primary key of the entity</typeparam>
[Serializable]
public abstract class AuditedEntity<TKey> : CreationAuditedEntity<TKey>, IAudited
public abstract class AuditedEntity<TKey> : CreationAuditedEntity<TKey>, IAuditedObject
{
/// <inheritdoc />
public virtual DateTime? LastModificationTime { get; set; }

8
framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/AuditedEntityWithUser.cs

@ -4,11 +4,11 @@ using Volo.Abp.Auditing;
namespace Volo.Abp.Domain.Entities.Auditing
{
/// <summary>
/// This class can be used to simplify implementing <see cref="IAudited{TUser}"/>.
/// This class can be used to simplify implementing <see cref="IAuditedObject{TUser}"/>.
/// </summary>
/// <typeparam name="TUser">Type of the user</typeparam>
[Serializable]
public abstract class AuditedEntityWithUser<TUser> : AuditedEntity, IAudited<TUser>
public abstract class AuditedEntityWithUser<TUser> : AuditedEntity, IAuditedObject<TUser>
where TUser : IEntity<long>
{
/// <inheritdoc />
@ -19,12 +19,12 @@ namespace Volo.Abp.Domain.Entities.Auditing
}
/// <summary>
/// This class can be used to simplify implementing <see cref="IAudited{TUser}"/>.
/// This class can be used to simplify implementing <see cref="IAuditedObject{TUser}"/>.
/// </summary>
/// <typeparam name="TKey">Type of the primary key of the entity</typeparam>
/// <typeparam name="TUser">Type of the user</typeparam>
[Serializable]
public abstract class AuditedEntityWithUser<TKey, TUser> : AuditedEntity<TKey>, IAudited<TUser>
public abstract class AuditedEntityWithUser<TKey, TUser> : AuditedEntity<TKey>, IAuditedObject<TUser>
where TUser : IEntity<long>
{
/// <inheritdoc />

8
framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/CreationAuditedAggregateRoot.cs

@ -4,10 +4,10 @@ using Volo.Abp.Auditing;
namespace Volo.Abp.Domain.Entities.Auditing
{
/// <summary>
/// This class can be used to simplify implementing <see cref="ICreationAudited"/> for aggregate roots.
/// This class can be used to simplify implementing <see cref="ICreationAuditedObject"/> for aggregate roots.
/// </summary>
[Serializable]
public abstract class CreationAuditedAggregateRoot : AggregateRoot, ICreationAudited
public abstract class CreationAuditedAggregateRoot : AggregateRoot, ICreationAuditedObject
{
/// <inheritdoc />
public virtual DateTime CreationTime { get; set; }
@ -17,11 +17,11 @@ namespace Volo.Abp.Domain.Entities.Auditing
}
/// <summary>
/// This class can be used to simplify implementing <see cref="ICreationAudited"/> for aggregate roots.
/// This class can be used to simplify implementing <see cref="ICreationAuditedObject"/> for aggregate roots.
/// </summary>
/// <typeparam name="TKey">Type of the primary key of the entity</typeparam>
[Serializable]
public abstract class CreationAuditedAggregateRoot<TKey> : AggregateRoot<TKey>, ICreationAudited
public abstract class CreationAuditedAggregateRoot<TKey> : AggregateRoot<TKey>, ICreationAuditedObject
{
/// <inheritdoc />
public virtual DateTime CreationTime { get; set; }

8
framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/CreationAuditedAggregateRootWithUser.cs

@ -4,23 +4,23 @@ using Volo.Abp.Auditing;
namespace Volo.Abp.Domain.Entities.Auditing
{
/// <summary>
/// This class can be used to simplify implementing <see cref="ICreationAudited{TUser}"/> for aggregate roots.
/// This class can be used to simplify implementing <see cref="ICreationAuditedObjectObject{TCreator}"/> for aggregate roots.
/// </summary>
/// <typeparam name="TUser">Type of the user</typeparam>
[Serializable]
public abstract class CreationAuditedAggregateRootWithUser<TUser> : CreationAuditedAggregateRoot, ICreationAudited<TUser>
public abstract class CreationAuditedAggregateRootWithUser<TUser> : CreationAuditedAggregateRoot, ICreationAuditedObject<TUser>
{
/// <inheritdoc />
public virtual TUser Creator { get; set; }
}
/// <summary>
/// This class can be used to simplify implementing <see cref="ICreationAudited{TUser}"/> for aggregate roots.
/// This class can be used to simplify implementing <see cref="ICreationAuditedObjectObject{TCreator}"/> for aggregate roots.
/// </summary>
/// <typeparam name="TKey">Type of the primary key of the entity</typeparam>
/// <typeparam name="TUser">Type of the user</typeparam>
[Serializable]
public abstract class CreationAuditedAggregateRootWithUser<TKey, TUser> : CreationAuditedAggregateRoot<TKey>, ICreationAudited<TUser>
public abstract class CreationAuditedAggregateRootWithUser<TKey, TUser> : CreationAuditedAggregateRoot<TKey>, ICreationAuditedObject<TUser>
{
/// <inheritdoc />
public virtual TUser Creator { get; set; }

8
framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/CreationAuditedEntity.cs

@ -4,10 +4,10 @@ using Volo.Abp.Auditing;
namespace Volo.Abp.Domain.Entities.Auditing
{
/// <summary>
/// This class can be used to simplify implementing <see cref="T:Volo.Abp.Auditing.ICreationAudited" /> for an entity.
/// This class can be used to simplify implementing <see cref="T:Volo.Abp.Auditing.ICreationAuditedObject" /> for an entity.
/// </summary>
[Serializable]
public abstract class CreationAuditedEntity : Entity, ICreationAudited
public abstract class CreationAuditedEntity : Entity, ICreationAuditedObject
{
/// <inheritdoc />
public virtual DateTime CreationTime { get; set; }
@ -17,11 +17,11 @@ namespace Volo.Abp.Domain.Entities.Auditing
}
/// <summary>
/// This class can be used to simplify implementing <see cref="ICreationAudited"/> for an entity.
/// This class can be used to simplify implementing <see cref="ICreationAuditedObject"/> for an entity.
/// </summary>
/// <typeparam name="TKey">Type of the primary key of the entity</typeparam>
[Serializable]
public abstract class CreationAuditedEntity<TKey> : Entity<TKey>, ICreationAudited
public abstract class CreationAuditedEntity<TKey> : Entity<TKey>, ICreationAuditedObject
{
/// <inheritdoc />
public virtual DateTime CreationTime { get; set; }

8
framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/CreationAuditedEntityWithUser.cs

@ -4,23 +4,23 @@ using Volo.Abp.Auditing;
namespace Volo.Abp.Domain.Entities.Auditing
{
/// <summary>
/// This class can be used to simplify implementing <see cref="ICreationAudited{TUser}"/>.
/// This class can be used to simplify implementing <see cref="ICreationAuditedObject{TCreator}"/>.
/// </summary>
/// <typeparam name="TUser">Type of the user</typeparam>
[Serializable]
public abstract class CreationAuditedEntityWithUser<TUser> : CreationAuditedEntity, ICreationAudited<TUser>
public abstract class CreationAuditedEntityWithUser<TUser> : CreationAuditedEntity, ICreationAuditedObject<TUser>
{
/// <inheritdoc />
public virtual TUser Creator { get; set; }
}
/// <summary>
/// This class can be used to simplify implementing <see cref="ICreationAudited{TUser}"/>.
/// This class can be used to simplify implementing <see cref="ICreationAuditedObjectObject{TCreator}"/>.
/// </summary>
/// <typeparam name="TKey">Type of the primary key of the entity</typeparam>
/// <typeparam name="TUser">Type of the user</typeparam>
[Serializable]
public abstract class CreationAuditedEntityWithUser<TKey, TUser> : CreationAuditedEntity<TKey>, ICreationAudited<TUser>
public abstract class CreationAuditedEntityWithUser<TKey, TUser> : CreationAuditedEntity<TKey>, ICreationAuditedObject<TUser>
{
/// <inheritdoc />
public virtual TUser Creator { get; set; }

8
framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/FullAuditedAggregateRoot.cs

@ -4,10 +4,10 @@ using Volo.Abp.Auditing;
namespace Volo.Abp.Domain.Entities.Auditing
{
/// <summary>
/// Implements <see cref="IFullAudited"/> to be a base class for full-audited aggregate roots.
/// Implements <see cref="IFullAuditedObject"/> to be a base class for full-audited aggregate roots.
/// </summary>
[Serializable]
public abstract class FullAuditedAggregateRoot : AuditedAggregateRoot, IFullAudited
public abstract class FullAuditedAggregateRoot : AuditedAggregateRoot, IFullAuditedObject
{
/// <inheritdoc />
public virtual bool IsDeleted { get; set; }
@ -20,11 +20,11 @@ namespace Volo.Abp.Domain.Entities.Auditing
}
/// <summary>
/// Implements <see cref="IFullAudited"/> to be a base class for full-audited aggregate roots.
/// Implements <see cref="IFullAuditedObject"/> to be a base class for full-audited aggregate roots.
/// </summary>
/// <typeparam name="TKey">Type of the primary key of the entity</typeparam>
[Serializable]
public abstract class FullAuditedAggregateRoot<TKey> : AuditedAggregateRoot<TKey>, IFullAudited
public abstract class FullAuditedAggregateRoot<TKey> : AuditedAggregateRoot<TKey>, IFullAuditedObject
{
/// <inheritdoc />
public virtual bool IsDeleted { get; set; }

8
framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/FullAuditedAggregateRootWithUser.cs

@ -4,11 +4,11 @@ using Volo.Abp.Auditing;
namespace Volo.Abp.Domain.Entities.Auditing
{
/// <summary>
/// Implements <see cref="IFullAudited{TUser}"/> to be a base class for full-audited aggregate roots.
/// Implements <see cref="IFullAuditedObjectObject{TUser}"/> to be a base class for full-audited aggregate roots.
/// </summary>
/// <typeparam name="TUser">Type of the user</typeparam>
[Serializable]
public abstract class FullAuditedAggregateRootWithUser<TUser> : FullAuditedAggregateRoot, IFullAudited<TUser>
public abstract class FullAuditedAggregateRootWithUser<TUser> : FullAuditedAggregateRoot, IFullAuditedObject<TUser>
where TUser : IEntity<long>
{
/// <inheritdoc />
@ -22,12 +22,12 @@ namespace Volo.Abp.Domain.Entities.Auditing
}
/// <summary>
/// Implements <see cref="IFullAudited{TUser}"/> to be a base class for full-audited aggregate roots.
/// Implements <see cref="IFullAuditedObjectObject{TUser}"/> to be a base class for full-audited aggregate roots.
/// </summary>
/// <typeparam name="TKey">Type of the primary key of the entity</typeparam>
/// <typeparam name="TUser">Type of the user</typeparam>
[Serializable]
public abstract class FullAuditedAggregateRootWithUser<TKey, TUser> : FullAuditedAggregateRoot<TKey>, IFullAudited<TUser>
public abstract class FullAuditedAggregateRootWithUser<TKey, TUser> : FullAuditedAggregateRoot<TKey>, IFullAuditedObject<TUser>
where TUser : IEntity<long>
{
/// <inheritdoc />

8
framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/FullAuditedEntity.cs

@ -4,10 +4,10 @@ using Volo.Abp.Auditing;
namespace Volo.Abp.Domain.Entities.Auditing
{
/// <summary>
/// Implements <see cref="IFullAudited"/> to be a base class for full-audited entities.
/// Implements <see cref="IFullAuditedObject"/> to be a base class for full-audited entities.
/// </summary>
[Serializable]
public abstract class FullAuditedEntity : AuditedEntity, IFullAudited
public abstract class FullAuditedEntity : AuditedEntity, IFullAuditedObject
{
/// <inheritdoc />
public virtual bool IsDeleted { get; set; }
@ -20,11 +20,11 @@ namespace Volo.Abp.Domain.Entities.Auditing
}
/// <summary>
/// Implements <see cref="IFullAudited"/> to be a base class for full-audited entities.
/// Implements <see cref="IFullAuditedObject"/> to be a base class for full-audited entities.
/// </summary>
/// <typeparam name="TKey">Type of the primary key of the entity</typeparam>
[Serializable]
public abstract class FullAuditedEntity<TKey> : AuditedEntity<TKey>, IFullAudited
public abstract class FullAuditedEntity<TKey> : AuditedEntity<TKey>, IFullAuditedObject
{
/// <inheritdoc />
public virtual bool IsDeleted { get; set; }

8
framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Entities/Auditing/FullAuditedEntityWithUser.cs

@ -4,11 +4,11 @@ using Volo.Abp.Auditing;
namespace Volo.Abp.Domain.Entities.Auditing
{
/// <summary>
/// Implements <see cref="IFullAudited{TUser}"/> to be a base class for full-audited entities.
/// Implements <see cref="IFullAuditedObject{TUser}"/> to be a base class for full-audited entities.
/// </summary>
/// <typeparam name="TUser">Type of the user</typeparam>
[Serializable]
public abstract class FullAuditedEntityWithUser<TUser> : FullAuditedEntity, IFullAudited<TUser>
public abstract class FullAuditedEntityWithUser<TUser> : FullAuditedEntity, IFullAuditedObject<TUser>
where TUser : IEntity<long>
{
/// <inheritdoc />
@ -22,12 +22,12 @@ namespace Volo.Abp.Domain.Entities.Auditing
}
/// <summary>
/// Implements <see cref="IFullAudited{TUser}"/> to be a base class for full-audited entities.
/// Implements <see cref="IFullAuditedObjectObject{TUser}"/> to be a base class for full-audited entities.
/// </summary>
/// <typeparam name="TKey">Type of the primary key of the entity</typeparam>
/// <typeparam name="TUser">Type of the user</typeparam>
[Serializable]
public abstract class FullAuditedEntityWithUser<TKey, TUser> : FullAuditedEntity<TKey>, IFullAudited<TUser>
public abstract class FullAuditedEntityWithUser<TKey, TUser> : FullAuditedEntity<TKey>, IFullAuditedObject<TUser>
where TUser : IEntity<long>
{
/// <inheritdoc />

18
framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/EntityFrameworkCore/Modeling/AbpEntityTypeBuilderExtensions.cs

@ -46,10 +46,10 @@ namespace Volo.Abp.EntityFrameworkCore.Modeling
}
public static void ConfigureDeletionAudited<T>(this EntityTypeBuilder<T> b)
where T : class, IDeletionAudited
where T : class, IDeletionAuditedObject
{
b.ConfigureDeletionTime();
b.Property(x => x.DeleterId).IsRequired(false).HasColumnName(nameof(IDeletionAudited.DeleterId));
b.Property(x => x.DeleterId).IsRequired(false).HasColumnName(nameof(IDeletionAuditedObject.DeleterId));
}
public static void ConfigureCreationTime<T>(this EntityTypeBuilder<T> b)
@ -59,10 +59,10 @@ namespace Volo.Abp.EntityFrameworkCore.Modeling
}
public static void ConfigureCreationAudited<T>(this EntityTypeBuilder<T> b)
where T : class, ICreationAudited
where T : class, ICreationAuditedObject
{
b.ConfigureCreationTime();
b.Property(x => x.CreatorId).IsRequired(false).HasColumnName(nameof(ICreationAudited.CreatorId));
b.Property(x => x.CreatorId).IsRequired(false).HasColumnName(nameof(ICreationAuditedObject.CreatorId));
}
public static void ConfigureLastModificationTime<T>(this EntityTypeBuilder<T> b)
@ -72,26 +72,26 @@ namespace Volo.Abp.EntityFrameworkCore.Modeling
}
public static void ConfigureModificationAudited<T>(this EntityTypeBuilder<T> b)
where T : class, IModificationAudited
where T : class, IModificationAuditedObject
{
b.ConfigureLastModificationTime();
b.Property(x => x.LastModifierId).IsRequired(false).HasColumnName(nameof(IModificationAudited.LastModifierId));
b.Property(x => x.LastModifierId).IsRequired(false).HasColumnName(nameof(IModificationAuditedObject.LastModifierId));
}
public static void ConfigureAudited<T>(this EntityTypeBuilder<T> b)
where T : class, IAudited
where T : class, IAuditedObject
{
b.ConfigureCreationAudited();
b.ConfigureModificationAudited();
}
public static void ConfigureFullAudited<T>(this EntityTypeBuilder<T> b)
where T : class, IFullAudited
where T : class, IFullAuditedObject
{
b.ConfigureAudited();
b.ConfigureDeletionAudited();
}
//TODO: Add other interfaces (IMultiTenant, IAudited<TUser>...)
//TODO: Add other interfaces (IMultiTenant, IAuditedObject<TUser>...)
}
}

2
framework/test/Volo.Abp.Auditing.Tests/Volo/Abp/Auditing/AuditPropertySetterTestBase.cs

@ -48,7 +48,7 @@ namespace Volo.Abp.Auditing
}
public class MyAuditedObject : IMultiTenant, IFullAudited
public class MyAuditedObject : IMultiTenant, IFullAuditedObject
{
public Guid? TenantId { get; set; }
public DateTime CreationTime { get; set; }

Loading…
Cancel
Save