174 lines
6.3 KiB
C#
174 lines
6.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using System.Text;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using iPackage.Core.Web.Extensions;
|
|
using iPackage.Models.Entity;
|
|
using Microsoft.AspNetCore.Identity;
|
|
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace iPackage.Core.Web.Models.Entity
|
|
{
|
|
|
|
public class ApplicationIdentityContext : IdentityDbContext<Admin, Role, int>
|
|
{
|
|
private Assembly _projectAssembly;
|
|
public ApplicationIdentityContext(DbContextOptions options) : base(options)
|
|
{
|
|
_projectAssembly = options.GetExtension<DbContextOptionCustomExtensions>().ProjectAssembly;
|
|
}
|
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
|
{
|
|
base.OnModelCreating(modelBuilder);
|
|
|
|
var entitiesAssembly = _projectAssembly;
|
|
modelBuilder.RegisterAllEntities<ApiEntity>(entitiesAssembly);
|
|
modelBuilder.RegisterEntityTypeConfiguration(entitiesAssembly);
|
|
modelBuilder.AddRestrictDeleteBehaviorConvention();
|
|
modelBuilder.AddSequentialGuidForIdConvention();
|
|
modelBuilder.AddPluralizingTableNameConvention();
|
|
}
|
|
public override int SaveChanges()
|
|
{
|
|
var entries = ChangeTracker
|
|
.Entries()
|
|
.Where(e => e.Entity is ApiEntity && (e.State == EntityState.Added));
|
|
|
|
foreach (var entityEntry in entries)
|
|
{
|
|
if (entityEntry.State == EntityState.Added)
|
|
{
|
|
((ApiEntity)entityEntry.Entity).CreationTime = DateTime.Now;
|
|
}
|
|
}
|
|
return base.SaveChanges();
|
|
}
|
|
|
|
public override Task<int> SaveChangesAsync(CancellationToken cancellationToken = new CancellationToken())
|
|
{
|
|
var entries = ChangeTracker
|
|
.Entries()
|
|
.Where(e => e.Entity is ApiEntity && (e.State == EntityState.Added));
|
|
|
|
foreach (var entityEntry in entries)
|
|
{
|
|
if (entityEntry.State == EntityState.Added)
|
|
{
|
|
((ApiEntity)entityEntry.Entity).CreationTime = DateTime.Now;
|
|
}
|
|
}
|
|
return base.SaveChangesAsync(cancellationToken);
|
|
}
|
|
}
|
|
|
|
public class ApplicationIdentityContext<TAdmin,TRole,TKey> : IdentityDbContext<TAdmin, TRole, TKey>
|
|
where TAdmin : IdentityUser<TKey>
|
|
where TKey : IEquatable<TKey>
|
|
where TRole : IdentityRole<TKey>
|
|
{
|
|
private Assembly _projectAssembly;
|
|
public ApplicationIdentityContext(DbContextOptions options) : base(options)
|
|
{
|
|
_projectAssembly = options.GetExtension<DbContextOptionCustomExtensions>().ProjectAssembly;
|
|
}
|
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
|
{
|
|
base.OnModelCreating(modelBuilder);
|
|
|
|
var entitiesAssembly = _projectAssembly;
|
|
modelBuilder.RegisterAllEntities<ApiEntity>(entitiesAssembly);
|
|
modelBuilder.RegisterEntityTypeConfiguration(entitiesAssembly);
|
|
modelBuilder.AddRestrictDeleteBehaviorConvention();
|
|
modelBuilder.AddSequentialGuidForIdConvention();
|
|
modelBuilder.AddPluralizingTableNameConvention();
|
|
}
|
|
public override int SaveChanges()
|
|
{
|
|
var entries = ChangeTracker
|
|
.Entries()
|
|
.Where(e => e.Entity is ApiEntity && (e.State == EntityState.Added));
|
|
|
|
foreach (var entityEntry in entries)
|
|
{
|
|
if (entityEntry.State == EntityState.Added)
|
|
{
|
|
((ApiEntity)entityEntry.Entity).CreationTime = DateTime.Now;
|
|
}
|
|
}
|
|
return base.SaveChanges();
|
|
}
|
|
|
|
public override Task<int> SaveChangesAsync(CancellationToken cancellationToken = new CancellationToken())
|
|
{
|
|
var entries = ChangeTracker
|
|
.Entries()
|
|
.Where(e => e.Entity is ApiEntity && (e.State == EntityState.Added));
|
|
|
|
foreach (var entityEntry in entries)
|
|
{
|
|
if (entityEntry.State == EntityState.Added)
|
|
{
|
|
((ApiEntity)entityEntry.Entity).CreationTime = DateTime.Now;
|
|
}
|
|
}
|
|
return base.SaveChangesAsync(cancellationToken);
|
|
}
|
|
}
|
|
|
|
public class ApplicationContext : DbContext
|
|
{
|
|
private Assembly _projectAssembly;
|
|
public ApplicationContext(DbContextOptions options) : base(options)
|
|
{
|
|
_projectAssembly = options.GetExtension<DbContextOptionCustomExtensions>().ProjectAssembly;
|
|
}
|
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
|
{
|
|
base.OnModelCreating(modelBuilder);
|
|
|
|
var entitiesAssembly = _projectAssembly;
|
|
modelBuilder.RegisterAllEntities<ApiEntity>(entitiesAssembly);
|
|
modelBuilder.RegisterEntityTypeConfiguration(entitiesAssembly);
|
|
modelBuilder.AddRestrictDeleteBehaviorConvention();
|
|
modelBuilder.AddSequentialGuidForIdConvention();
|
|
modelBuilder.AddPluralizingTableNameConvention();
|
|
}
|
|
public override int SaveChanges()
|
|
{
|
|
var entries = ChangeTracker
|
|
.Entries()
|
|
.Where(e => e.Entity is ApiEntity && (e.State == EntityState.Added));
|
|
|
|
foreach (var entityEntry in entries)
|
|
{
|
|
if (entityEntry.State == EntityState.Added)
|
|
{
|
|
((ApiEntity)entityEntry.Entity).CreationTime = DateTime.Now;
|
|
}
|
|
}
|
|
return base.SaveChanges();
|
|
}
|
|
|
|
public override Task<int> SaveChangesAsync(CancellationToken cancellationToken = new CancellationToken())
|
|
{
|
|
var entries = ChangeTracker
|
|
.Entries()
|
|
.Where(e => e.Entity is ApiEntity && (e.State == EntityState.Added));
|
|
|
|
foreach (var entityEntry in entries)
|
|
{
|
|
if (entityEntry.State == EntityState.Added)
|
|
{
|
|
((ApiEntity)entityEntry.Entity).CreationTime = DateTime.Now;
|
|
}
|
|
}
|
|
return base.SaveChangesAsync(cancellationToken);
|
|
}
|
|
}
|
|
}
|
|
|