예제 #1
0
 /// <summary>
 ///
 /// </summary>
 /// <typeparam name="THandler"></typeparam>
 /// <param name="optionsBuilder"></param>
 /// <returns></returns>
 public static IScorpioDbContextOptionsBuilder AddSaveChangeHandler <THandler>(this IScorpioDbContextOptionsBuilder optionsBuilder)
     where THandler : class, IOnSaveChangeHandler
 {
     if (optionsBuilder is ScorpioDbContextOptionsBuilder builder)
     {
         builder.Services.TryAddEnumerable(ServiceDescriptor.Transient <IOnSaveChangeHandler, THandler>());
     }
     return(optionsBuilder);
 }
예제 #2
0
 /// <summary>
 ///
 /// </summary>
 /// <typeparam name="TDbContext"></typeparam>
 /// <param name="optionsBuilder"></param>
 /// <param name="memoryCache"></param>
 /// <returns></returns>
 public static IScorpioDbContextOptionsBuilder <TDbContext> UseMemoryCache <TDbContext>(this IScorpioDbContextOptionsBuilder <TDbContext> optionsBuilder, IMemoryCache memoryCache)
     where TDbContext : ScorpioDbContext <TDbContext>
 {
     return(optionsBuilder.UseOptions(b => b.UseMemoryCache(memoryCache)));
 }
예제 #3
0
 /// <summary>
 ///
 /// </summary>
 /// <typeparam name="TDbContext"></typeparam>
 /// <param name="optionsBuilder"></param>
 /// <param name="loggerFactory"></param>
 /// <returns></returns>
 public static IScorpioDbContextOptionsBuilder <TDbContext> UseLoggerFactory <TDbContext>(this IScorpioDbContextOptionsBuilder <TDbContext> optionsBuilder, ILoggerFactory loggerFactory)
     where TDbContext : ScorpioDbContext <TDbContext>
 {
     return(optionsBuilder.UseOptions(b => b.UseLoggerFactory(loggerFactory)));
 }
예제 #4
0
 /// <summary>
 ///
 /// </summary>
 /// <typeparam name="TDbContext"></typeparam>
 /// <param name="optionsBuilder"></param>
 /// <param name="optionsAction"></param>
 /// <returns></returns>
 public static IScorpioDbContextOptionsBuilder <TDbContext> UseOptions <TDbContext>(this IScorpioDbContextOptionsBuilder <TDbContext> optionsBuilder, Action <DbContextOptionsBuilder <TDbContext> > optionsAction)
     where TDbContext : ScorpioDbContext <TDbContext>
 {
     if (optionsBuilder is ScorpioDbContextOptionsBuilder <TDbContext> builder)
     {
         builder.OptionsActions.AddIfNotContains(optionsAction);
     }
     return(optionsBuilder);
 }
예제 #5
0
 /// <summary>
 ///
 /// </summary>
 /// <typeparam name="TDbContext"></typeparam>
 /// <param name="optionsBuilder"></param>
 /// <param name="defaultRepositoryType"></param>
 public static IScorpioDbContextOptionsBuilder <TDbContext> SetDefaultRepository <TDbContext>(this IScorpioDbContextOptionsBuilder <TDbContext> optionsBuilder, Type defaultRepositoryType)
     where TDbContext : ScorpioDbContext <TDbContext>
 {
     if (!defaultRepositoryType.IsAssignableTo(typeof(IRepository <>)))
     {
         throw new ScorpioException($"Given repositoryType is not a repository. It must implement {typeof(IRepository<>).AssemblyQualifiedName}.");
     }
     if (optionsBuilder is ScorpioDbContextOptionsBuilder <TDbContext> builder)
     {
         builder.DefaultRepositoryType = defaultRepositoryType;
     }
     return(optionsBuilder);
 }
예제 #6
0
 /// <summary>
 ///
 /// </summary>
 /// <typeparam name="TDbContext"></typeparam>
 /// <param name="optionsBuilder"></param>
 /// <param name="defaultRepositoryType"></param>
 public static IScorpioDbContextOptionsBuilder <TDbContext> SetDefaultRepository <TDbContext>(this IScorpioDbContextOptionsBuilder <TDbContext> optionsBuilder, Type defaultRepositoryType)
     where TDbContext : ScorpioDbContext <TDbContext>
 {
     if (!defaultRepositoryType.GetInterfaces().Any(i => i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IEfCoreRepository <>)))
     {
         throw new ScorpioException($"Given repositoryType is not a repository. It must implement {typeof(IRepository<>).AssemblyQualifiedName}.");
     }
     if (optionsBuilder is ScorpioDbContextOptionsBuilder <TDbContext> builder)
     {
         builder.DefaultRepositoryType = defaultRepositoryType;
     }
     return(optionsBuilder);
 }