SqlSugar/Src/Asp.NetCore2/SqlSeverTest/UnitTest/Unitadfasdfa.cs
2023-06-29 13:51:32 +08:00

136 lines
5.5 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 Newtonsoft.Json.Linq;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Text;
namespace OrmTest
{
internal class Unitadfasdfa
{
public static void Init()
{
var db = new SqlSugarScope(new List<SqlSugar.ConnectionConfig>()
{
new ConnectionConfig()
{
ConfigId = "B",
DbLinkName = "HGT",//默认: dblinkName.[表名]dblinkName以_结尾: dblinkName表名dblinkName以@开头: [表名]@dblinkName
ConnectionString = "Data Source=172.18.15.141/eee;User ID=aaa;Password=***",
DbType = DbType.Oracle,
IsAutoCloseConnection = true
},
new ConnectionConfig()
{
ConfigId = "A",
DbLinkName = "HGT",//默认: dblinkName.[表名]dblinkName以_结尾: dblinkName表名dblinkName以@开头: [表名]@dblinkName
ConnectionString = "Data Source=172.18.15.141/eee;User ID=aaa;Password=***",
DbType = DbType.Oracle,
IsAutoCloseConnection = true,
ConfigureExternalServices = new ConfigureExternalServices
{
EntityNameService = (type, entity) => // 处理表
{
if (true && !entity.DbTableName.Contains('_') && entity.DbTableName?.EndsWith("OutPut") == false)
entity.DbTableName = UtilMethods.ToUnderLine(entity.DbTableName); // 驼峰转下划线
if(type.Name == nameof(KingJsonTest))
{
}
// 获取 CustomAttribute 特性
var customAttribute = Attribute.GetCustomAttribute(type.Assembly, typeof(SugarTable));
},
EntityService = (type, column) => // 处理列
{
if (true && !column.IsIgnore && !column.DbColumnName.Contains('_') && column.DbTableName?.EndsWith("OutPut") == false)
column.DbColumnName = UtilMethods.ToUnderLine(column.DbColumnName); // 驼峰转下划线
},
}
},
});
new List<String>() { "A", "B" }.ForEach(configId =>
{
//每次Sql执行前事件
db.GetConnectionScope(configId).Aop.OnLogExecuting = (sql, pars) =>
{
Console.WriteLine("【" + DateTime.Now + "——执行SQL】\r\n" + UtilMethods.GetSqlString(db.CurrentConnectionConfig.DbType, sql, pars) + "\r\n");
};
//出错打印日志
db.GetConnectionScope(configId).Aop.OnError = (e) =>
{
Console.WriteLine($"执行SQL出错{e.Message}");
};
});
//if (!db.DbMaintenance.IsAnyTable(true ? UtilMethods.ToUnderLine(nameof(KingJsonTest)) : nameof(KingJsonTest), false))
//{
// db.CodeFirst.InitTables<KingJsonTest>();
//}
var sql = db.QueryableWithAttr<KingJsonTest>().LeftJoin<KingTree>((t, j) => t.Id == j.Id).ToSqlString();
if (!sql.Contains("\"KINGTREE\""))
{
throw new Exception("unit error");
}
if (!sql.Contains("\"KING_JSON_TEST\""))
{
throw new Exception("unit error");
}
var sq2 = db.QueryableWithAttr<KingJsonTest>()
.LeftJoin<KingTree>((t, j) => t.Id == j.Id)
.Where((t, j) => t.CreateTime == null || j.ParentId == 1)
.Select((t, j) => new KingOutPut() { }, true)
.ToSqlString();
var sql3 = "SELECT \"T\".\"CREATE_TIME\" AS \"CREATETIME\" ,\"J\".\"PARENTID\" AS \"PARENTID\" FROM \"KING_JSON_TEST\" \"T\" Left JOIN HGT.\"KINGTREE\" \"J\" ON ( \"T\".\"ID\" = \"J\".\"ID\" ) WHERE (( \"T\".\"CREATE_TIME\" IS NULL ) OR ( \"J\".\"PARENTID\" = 1 ))";
if (sq2 != sql3)
{
throw new Exception("unit error");
}
}
public class KingOutPut
{
public DateTime CreateTime { get; set; }
public int ParentId { get; set; }
}
//Json字段实体
[TenantAttribute("A")]//对应ConfigId
[SugarTable(null, "Json测试表King")]
public class KingJsonTest
{
[SqlSugar.SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
[SqlSugar.SugarColumn(ColumnDataType = StaticConfig.CodeFirst_BigString, IsJson = true)]
public JObject ExtJson { get; set; }
[SqlSugar.SugarColumn]
public DateTime CreateTime { get; set; }
}
//实体
[TenantAttribute("B")]
[SugarTable(null, "Tree测试表King")]
public class KingTree
{
[SqlSugar.SugarColumn(IsPrimaryKey = true)]
public int Id { get; set; } //关联字段 (如果非主键的话,也要设成主键才会有效,可以新建个类)
public string Name { get; set; }
public int ParentId { get; set; }//父级字段
[SqlSugar.SugarColumn(IsIgnore = true)]
public List<KingTree> Child { get; set; }
}
}
}