Added AbpEntityTypeBuilderExtensions

pull/272/head
Halil İbrahim Kalkan 8 years ago
parent 7c80d99d76
commit 75dfe9a602

@ -15,6 +15,7 @@
<ItemGroup>
<ProjectReference Include="..\Volo.Abp.Ddd.Domain\Volo.Abp.Ddd.Domain.csproj" />
<ProjectReference Include="..\Volo.Abp.Json\Volo.Abp.Json.csproj" />
</ItemGroup>
<ItemGroup>

@ -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…
Cancel
Save