1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- using ERP.Core.Entity;
- using ERP.Framework.WebApi;
- using Microsoft.EntityFrameworkCore;
- using Microsoft.Extensions.Configuration;
- using Microsoft.Extensions.Logging;
- using Microsoft.Extensions.Options;
- using Serilog;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace ERP.Core.Context
- {
- public class CoreDbContext : DbContext
- {
- private readonly IConfiguration _configuration;
- public CoreDbContext(IConfiguration configuration)
- {
- this._configuration = configuration;
- }
- public override int SaveChanges()
- {
- var entityEntries = ChangeTracker.Entries().ToList();
- foreach(var entry in entityEntries)
- {
- if (entry.State == EntityState.Added)
- {
- Entry(entry.Entity).Property(nameof(BaseEntity.CreateTime)).CurrentValue = DateTime.Now;
- //Entry(entry.Entity).Property(nameof(BaseEntity.CreateBy)).CurrentValue = DateTime.Now;
- }
- if (entry.State == EntityState.Modified)
- {
- Entry(entry.Entity).Property(nameof(BaseEntity.UpdateTime)).CurrentValue = DateTime.Now;
- }
- }
- return base.SaveChanges();
- }
- protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
- {
- var name = GetType().Name;
- // 可扩展为多租户,从当前请求头拿租户Id,根据租户Id获取对应数据库配置名,替换
- string connect = _configuration.GetConnectionString(name)!;
- // 可扩展为使用多种数据库,添加配置项数组根据不同租户Id,配置不同库类型,Key为租户Id/库名,对象包含数据库类型等
- optionsBuilder.UseMySql(connect,new MySqlServerVersion(new Version(8,0,26)));
- UseLog(optionsBuilder);
- base.OnConfiguring(optionsBuilder);
- }
- /// <summary>
- /// 配置模型关系
- /// </summary>
- /// <param name="modelBuilder"></param>
- protected override void OnModelCreating(ModelBuilder modelBuilder)
- {
- }
- private void UseLog(DbContextOptionsBuilder optionsBuilder)
- {
- optionsBuilder.UseLoggerFactory(LoggerFactory.Create(builder =>
- {
- builder.AddConsole();
- builder.AddSerilog();
- }));
- }
- public virtual DbSet<SysUser> SysUser { get; set; }
- }
- }
|