using Microsoft.Extensions.Configuration;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Text;
using Wms.Screen.Util.Extensions;
namespace Wms.Screen.SqlSugar
{
public class SqlSugarConfig
{
///
/// 默认是SqlServer
///
/// IConfiguration
///
public static (DbType, string) GetConnectionString(IConfiguration configuration)
{
string type = configuration["SqlSugar:DbType"];
var dbType = type.ToEnum();
switch (dbType)
{
case DbType.MySql:
return (DbType.MySql, configuration["SqlSugar:MySqlConnectionString"]);
case DbType.SqlServer:
return (DbType.SqlServer, configuration["SqlSugar:SqlServerConnectionString"]);
case DbType.Sqlite:
return (DbType.Sqlite, configuration["SqlSugar:SqliteConnectionString"]);
case DbType.Oracle:
return (DbType.Oracle, configuration["SqlSugar:OracleConnectionString"]);
case DbType.PostgreSQL:
return (DbType.PostgreSQL, configuration["SqlSugar:PostgreSQLConnectionString"]);
default:
return (DbType.SqlServer, configuration["SqlSugar:SqlServerConnectionString"]);
}
}
public static List GetLambda()
{
//Lambda自定义解析
var expMethods = new List
{
new SqlFuncExternal()
{
UniqueMethodName = "ToDateFormat",
MethodValue = (expInfo, dbType, expContext) =>
{
switch (dbType)
{
case DbType.SqlServer:
return $"CONVERT (VARCHAR (10), {expInfo.Args[0].MemberName}, 121 )";
case DbType.MySql:
return $"DATE_FORMAT( {expInfo.Args[0].MemberName}, '%Y-%m-%d' ) ";
case DbType.Sqlite:
return $"date({expInfo.Args[0].MemberName})";
case DbType.PostgreSQL:
case DbType.Oracle:
return $"to_date({expInfo.Args[0].MemberName},yyyy-MM-dd)";
default:
throw new Exception("未实现");
}
}
},
};
return expMethods;
}
///
/// 解决数据库表名与实体名称不一致的问题 别名表
///
public static readonly MappingTableList listTable = new MappingTableList()
{
new MappingTable() { EntityName="Sys_menu",DbTableName="sys_menu_wms",DbShortTaleName="menu"},
};
public static readonly MappingColumnList columns = new MappingColumnList()
{
};
}
}