mirror of https://github.com/abpframework/abp.git
2 changed files with 83 additions and 0 deletions
@ -0,0 +1,82 @@ |
|||||
|
using System.Collections.Generic; |
||||
|
using Microsoft.EntityFrameworkCore; |
||||
|
using Microsoft.EntityFrameworkCore.Metadata.Builders; |
||||
|
using Newtonsoft.Json; |
||||
|
using Volo.Abp.Auditing; |
||||
|
using Volo.Abp.Data; |
||||
|
|
||||
|
namespace Volo.Abp.EntityFrameworkCore.Modeling |
||||
|
{ |
||||
|
public static class AbpEntityTypeBuilderExtensions |
||||
|
{ |
||||
|
public static void ConfigureExtraProperties<T>(this EntityTypeBuilder<T> b) |
||||
|
where T : class, IHasExtraProperties |
||||
|
{ |
||||
|
b.Property(u => u.ExtraProperties) |
||||
|
.HasConversion( |
||||
|
d => JsonConvert.SerializeObject(d, Formatting.None), |
||||
|
s => JsonConvert.DeserializeObject<Dictionary<string, object>>(s) |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
public static void ConfigureSoftDelete<T>(this EntityTypeBuilder<T> b) |
||||
|
where T : class, ISoftDelete |
||||
|
{ |
||||
|
b.Property(x => x.IsDeleted).IsRequired().HasDefaultValue(false).HasColumnName(nameof(ISoftDelete.IsDeleted)); |
||||
|
} |
||||
|
|
||||
|
public static void ConfigureDeletionTime<T>(this EntityTypeBuilder<T> b) |
||||
|
where T : class, IHasDeletionTime |
||||
|
{ |
||||
|
b.ConfigureSoftDelete(); |
||||
|
b.Property(x => x.DeletionTime).IsRequired(false).HasColumnName(nameof(IHasDeletionTime.DeletionTime)); |
||||
|
} |
||||
|
|
||||
|
public static void ConfigureDeletionAudited<T>(this EntityTypeBuilder<T> b) |
||||
|
where T : class, IDeletionAudited |
||||
|
{ |
||||
|
b.ConfigureDeletionTime(); |
||||
|
b.Property(x => x.DeleterId).IsRequired(false).HasColumnName(nameof(IDeletionAudited.DeleterId)); |
||||
|
} |
||||
|
|
||||
|
public static void ConfigureCreationTime<T>(this EntityTypeBuilder<T> b) |
||||
|
where T : class, IHasCreationTime |
||||
|
{ |
||||
|
b.Property(x => x.CreationTime).IsRequired().HasColumnName(nameof(IHasCreationTime.CreationTime)); |
||||
|
} |
||||
|
|
||||
|
public static void ConfigureCreationAudited<T>(this EntityTypeBuilder<T> b) |
||||
|
where T : class, ICreationAudited |
||||
|
{ |
||||
|
b.ConfigureCreationTime(); |
||||
|
b.Property(x => x.CreatorId).IsRequired(false).HasColumnName(nameof(ICreationAudited.CreatorId)); |
||||
|
} |
||||
|
|
||||
|
public static void ConfigureLastModificationTime<T>(this EntityTypeBuilder<T> b) |
||||
|
where T : class, IHasModificationTime |
||||
|
{ |
||||
|
b.Property(x => x.LastModificationTime).IsRequired(false).HasColumnName(nameof(IHasModificationTime.LastModificationTime)); |
||||
|
} |
||||
|
|
||||
|
public static void ConfigureModificationAudited<T>(this EntityTypeBuilder<T> b) |
||||
|
where T : class, IModificationAudited |
||||
|
{ |
||||
|
b.ConfigureLastModificationTime(); |
||||
|
b.Property(x => x.LastModifierId).IsRequired(false).HasColumnName(nameof(IModificationAudited.LastModifierId)); |
||||
|
} |
||||
|
|
||||
|
public static void ConfigureAudited<T>(this EntityTypeBuilder<T> b) |
||||
|
where T : class, IAudited |
||||
|
{ |
||||
|
b.ConfigureCreationAudited(); |
||||
|
b.ConfigureModificationAudited(); |
||||
|
} |
||||
|
|
||||
|
public static void ConfigureFullAudited<T>(this EntityTypeBuilder<T> b) |
||||
|
where T : class, IFullAudited |
||||
|
{ |
||||
|
b.ConfigureAudited(); |
||||
|
b.ConfigureDeletionAudited(); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue