/// <summary> /// 获取指定实体类型的Sql执行器 /// </summary> public static ISqlExecutor <TEntity, TKey> GetSqlExecutor <TEntity, TKey>(this IUnitOfWorkManager unitOfWorkManager) where TEntity : IEntity <TKey> { OFoodDbContextOptions options = unitOfWorkManager.GetDbContextResolveOptions(typeof(TEntity)); DatabaseType databaseType = options.DatabaseType; IList <ISqlExecutor <TEntity, TKey> > executors = unitOfWorkManager.ServiceProvider.GetServices <ISqlExecutor <TEntity, TKey> >().ToList(); return(executors.FirstOrDefault(m => m.DatabaseType == databaseType)); }
/// <summary> /// 获取指定实体类型的数据上下文选项 /// </summary> public static OFoodDbContextOptions GetDbContextResolveOptions(this IUnitOfWorkManager unitOfWorkManager, Type entityType) { Type dbContextType = unitOfWorkManager.GetDbContextType(entityType); OFoodDbContextOptions dbContextOptions = unitOfWorkManager.ServiceProvider.GetOFoodOptions()?.GetDbContextOptions(dbContextType); if (dbContextOptions == null) { throw new OFoodException($"无法找到数据上下文“{dbContextType}”的配置信息"); } return(dbContextOptions); }