Files
SecMPS/api_sqlsugar/VolPro.Core/EFDbContext/BaseDbContext.cs
2026-05-15 23:22:48 +08:00

161 lines
6.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using VolPro.Core.Configuration;
using VolPro.Core.Extensions;
using Microsoft.AspNetCore.Hosting;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyModel;
using System;
using System.Linq;
using System.Reflection;
using System.Runtime.Loader;
using VolPro.Core.Const;
using VolPro.Core.Enums;
using VolPro.Core.BaseProvider;
using VolPro.Core.DbSqlSugar;
using SqlSugar;
namespace VolPro.Core.EFDbContext
{
public abstract class BaseDbContext : DbContext
{
public ISqlSugarClient SqlSugarClient { get; set; }
public bool QueryTracking
{
set
{
}
}
public BaseDbContext():base() { }
public ISugarQueryable<TEntity> Set<TEntity>(bool filterDeleted=false) where TEntity : class, new()
{
return SqlSugarClient.Set<TEntity>(filterDeleted);
}
public int SaveChanges()
{
return SqlSugarClient.SaveQueues();
}
protected void UseDbType(DbContextOptionsBuilder optionsBuilder, string connectionString)
{
//if (DBType.Name == DbCurrentType.MsSql.ToString())
//{
// if (AppSetting.UseSqlserver2008)
// {
// optionsBuilder.ReplaceService<IQueryTranslationPostprocessorFactory, SqlServer2008QueryTranslationPostprocessorFactory>();
// }
// optionsBuilder.UseSqlServer(connectionString);
//}
//else if (DBType.Name == DbCurrentType.MySql.ToString())
//{
// optionsBuilder.UseMySql(connectionString, new MySqlServerVersion(new Version(8, 0, 11)));
//}
//else if (DBType.Name == DbCurrentType.PgSql.ToString())
//{
// optionsBuilder.UseNpgsql(connectionString);
//}
//else if (DBType.Name == DbCurrentType.Oracle.ToString())
//{
// optionsBuilder.UseOracle(connectionString, b => b.UseOracleSQLCompatibility("11"));
//}
//else
//{
// throw new Exception("数据库未实现");
// // optionsBuilder.UseSqlServer(connectionString);
//}
}
//protected void OnModelCreating(ModelBuilder modelBuilder, Type type)
//{
// try
// {
// //获取所有类库
// var compilationLibrary = DependencyContext
// .Default
// .CompileLibraries
// .Where(x => !x.Serviceable && x.Type != "package" && x.Type == "project");
// foreach (var _compilation in compilationLibrary)
// {
// //加载指定类
// AssemblyLoadContext.Default
// .LoadFromAssemblyName(new AssemblyName(_compilation.Name))
// .GetTypes().Where(x => x.GetTypeInfo().BaseType != null
// && x.BaseType == (type)).ToList()
// .ForEach(t => { modelBuilder.Entity(t); });
// }
// //Oracle数据库指定表名与列名全部大写
// if (DBType.Name == DbCurrentType.Oracle.ToString())
// {
// foreach (var entity in modelBuilder.Model.GetEntityTypes())
// {
// string tableName = entity.GetTableName().ToUpper();
// if (tableName.StartsWith("SYS_") || tableName.StartsWith("DEMO_"))
// {
// entity.SetTableName(entity.GetTableName().ToUpper());
// foreach (var property in entity.GetProperties())
// {
// property.SetColumnName(property.Name.ToUpper());
// }
// }
// }
// }
// //重置系统表名小写,如果是mysql数据库创建的表名都是小写的请取消此注释
// //foreach (var entity in modelBuilder.Model.GetEntityTypes())
// //{
// //
// // if (entity.GetTableName().StartsWith("Sys_"))
// // {
// // Console.WriteLine(entity.GetTableName());
// // entity.SetTableName(entity.GetTableName().ToLower());
// // }
// // //// 重置所有列名
// // //foreach (var property in entity.GetProperties())
// // //{
// // // //StoreObjectIdentifier
// // // property.SetColumnName(property.Name);
// // //}
// //}
// //插件式开发
// //try
// //{
// // string rootPath = (AppSetting.CurrentPath + "\\plugs").ReplacePath();
// // foreach (var item in Directory.GetFiles(rootPath).Where(x => x.EndsWith(".dll")))
// // {
// // string path = ($"{item}").ReplacePath();
// // Assembly.LoadFile(path).GetTypes().Where(x => x.GetTypeInfo().BaseType != null
// // && x.BaseType == (type)).ToList()
// // .ForEach(t => {
// // Console.Write(t.Name);
// // modelBuilder.Entity(t);
// // });
// // }
// //}
// //catch (Exception ex)
// //{
// // Console.WriteLine($"EF解析类库异常{ex.Message + ex.StackTrace}");
// //}
// base.OnModelCreating(modelBuilder);
// }
// catch (Exception ex)
// {
// string mapPath = ($"Log/").MapPath();
// Utilities.FileHelper.WriteFile(mapPath, $"syslog_{DateTime.Now.ToString("yyyyMMddHHmmss")}.txt", ex.Message + ex.StackTrace + ex.Source);
// }
// }
}
}