使用Freesql同步数据库传T参数

using Test.Model;
using Ldt.SettingCenter.Core;
using LdtCommonFreeSql;
using LdtCommonFreeSql.Model;
using Microsoft.Extensions.Hosting;
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace Test
{
    public class FreeSqlTest : BackgroundService
    {
        private readonly FreesqlDb freesqlDb;
        private readonly ISettingCenter settingCenter;
        public FreeSqlTest(FreesqlDb freesqlDb, ISettingCenter settingCenter)
        {
            this.freesqlDb = freesqlDb;
            this.settingCenter = settingCenter;
        }
        protected override Task ExecuteAsync(CancellationToken stoppingToken)
        {
            var mysql171 = new ConnConfig { Dbtype = FreeSql.DataType.MySql, ConnectString = "Data Source=192.168.1.171;Port=3306;User ID=root;Password=abc@123; Initial Catalog=ldt_user_center;Charset=utf8; SslMode=none;Min pool size=1;Allow User Variables=True;" };
            var mssql109 = new ConnConfig { Dbtype = FreeSql.DataType.SqlServer, ConnectString = "Data Source=192.168.1.109;User Id=sa;Password=ldtlaw_123;Initial Catalog=ldt_user_center;Pooling=true;Min Pool Size=1" };
            //var t= freesqlDb.GetFreeSql("Ldt.ElementCenterCommon");
            //获取案件信息转换路径地址
            var model = settingCenter.GetApplicationInfo(LdtCommonUtil.SystemInfo.IsLinux() ? "CommonSettingLinux" : "CommonSetting");
            var freesql71 = freesqlDb.SelectDBType(mysql171);
            var freesq109 = freesqlDb.SelectDBType(mssql109);
            TestObj testObj171 = new TestObj();
            testObj171.freeSql1 = freesql71;
            TestObj testObj109 = new TestObj();
            testObj109.freeSql1 = freesq109;

            Type type = Assembly.Load("Test").GetType("Test.Model.SysDept");
            var ttt = testObj171.freeSql1.Select().ToList(p => p);

            MethodInfo mi = testObj171.GetType().GetMethod("Test").MakeGenericMethod(new Type[] { type });

            var t = mi.Invoke(testObj171, new object[] { $"dept_id='DI4C2'" }) as IEnumerable;
            foreach (var item in t)
            {
                freesq109.Insert(item).ExecuteAffrows();
            }
            return Task.CompletedTask;
        }
    }

    public class TestObj
    {
        public IFreeSql freeSql1;
        public object Test(string condition) where T1 : class, new()
        {
            return freeSql1.Select().Where(condition).ToList(p => p);
        }
    }
}
 

你可能感兴趣的:(数据库,c#)