public IDbLinkItem GetDbLink(string name) { IDbLinkItem result = null; foreach (var provider in _providers) { result = provider.GetDbLink(name); if (result != null) { break; } } return(result); }
public IRepository CreateRepository(IServiceProvider serviceProvider, IDbLinkItem dbLink, params Type[] entityTypes) { Check.NotNull(dbLink, nameof(dbLink)); Check.NotNull(serviceProvider, nameof(serviceProvider)); //if (!_dbProviders.ContainsKey(dbLink.DbType)) throw new Exception($"未找到名称为:{dbLink.DbType}的数据库配置."); //var dbProvider = _dbProviders[dbLink.DbType]; if (!_dbProviders.TryGetValue(dbLink.DbType, out IDbProvider dbProvider)) { throw new Exception($"未找到名称为:{dbLink.DbType}的数据库配置."); } //var dbContext = new CommonDbContext(dbProvider, dbLink.ConnectionString, modelBuilder => // { // if (entityTypes != null && entityTypes.Length > 0) // { // foreach (var item in entityTypes) // { // _options.GetModelBuilderAction(item).Invoke(modelBuilder); // } // } // }); var dbType = GetCommonDbContextType(entityTypes); if (dbType == null) { throw new Exception($"未能根据传入的实体类型,找到对应的CommonDbContext.参数entityTypes的数量为:{entityTypes?.Length.ToString()}"); } return(new Repository(serviceProvider, () => { var dbContext = serviceProvider.GetRequiredService(dbType) as CommonDbContext; dbContext?.Init(dbProvider, dbLink.ConnectionString); return dbContext; }, dbProvider)); }