using Autofac; using ce.autofac.extension; using learun.util; using System; namespace learun.database { /// /// 版 本 EasyCode EC管理后台 /// Copyright (c) 2019-present EC管理有限公司 /// 创建人:tobin /// 日 期:2019.09.10 /// 描 述:定义仓储模型工厂 /// public class RepositoryFactory { /// /// 定义仓储(基础库) /// /// public IRepository BaseRepository() { return new Repository(IocManager.Instance.GetService(ConfigHelper.GetConfig().dbType, new NamedParameter("connString", ConfigHelper.GetConfig().dbConn))); } /// /// 定义仓储(扩展库) /// /// public IRepository BaseRepository(string code) { if (code == "lrsystemdb") { return BaseRepository(); } var model = DbCaChe.GetValue(code); if (model == null) { model = BaseRepository().FindEntity(" select F_DBName,F_DbType,F_DbConnection from lr_base_databaselink where F_DBName = @code ", new { code }).GetAwaiter().GetResult(); if (model == null) { throw (new Exception("此编码找不到对应数据库:" + code)); } DbCaChe.SetValue(code, model); } return new Repository(IocManager.Instance.GetService(model.F_DbType, new NamedParameter("connString", model.F_DbConnection))); } /// /// 定义仓储 /// /// 链接串 /// 数据库类型 /// public IRepository BaseRepository(string conn, string dbType) { return new Repository(IocManager.Instance.GetService(dbType, new NamedParameter("connString", conn))); } /// /// 数据库类型 /// /// /// SqlServer,Oracle,MySql public string DBType(string code) { if (code == "lrsystemdb") { return ConfigHelper.GetConfig().dbType; } else { var model = DbCaChe.GetValue(code); if (model == null) { model = BaseRepository().FindEntity(" select F_DBName,F_DbType,F_DbConnection form lr_base_databaselink where F_DBName = @code ", new { code }).GetAwaiter().GetResult(); if (model == null) { throw (new Exception("此编码找不到对应数据库:" + code)); } DbCaChe.SetValue(code, model); } return model.F_DbType; } } } }