iPackage/iPackage.Core.Web/Models/Entity/ApplicationContext.cs

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);
}
}
}