示例#1
0
    //public static async AsyncReply<T> CreateResourceAsync<T>(this IServiceProvider serviceProvider, T properties = null) where T : class, IResource
    //{
    //    var options = serviceProvider.GetService<IDbContextOptions>().FindExtension<EsiurExtensionOptions<T>>();

    //    var resource = await Warehouse.New<T>("", options.Store, null, null, null, properties);

    //    resource.Instance.Managers.AddRange(options.Store.Instance.Managers.ToArray());

    //    return resource;
    //}

    //public static T CreateResource<T>(this IServiceProvider serviceProvider, object properties = null) where T : class, IResource
    //    => CreateResourceAsync<T>(serviceProvider, properties).Wait();

    public static DbContextOptionsBuilder UseEsiur(this DbContextOptionsBuilder optionsBuilder,
                                                   EntityStore store,
                                                   Func <DbContext> getter = null

                                                   //IServiceCollection services = null
                                                   //string name = null,
                                                   //IResource parent = null,
                                                   //IPermissionsManager manager = null,
                                                   //Func<DbContext> dbContextProvider = null
                                                   )
    {
        var extension = optionsBuilder.Options.FindExtension <EsiurExtensionOptions>();

        if (extension == null)
        {
            if (store == null)
            {
                return(optionsBuilder);
            }

            store.Options = optionsBuilder.Options;
            extension     = new EsiurExtensionOptions(store);
        }

        ((IDbContextOptionsBuilderInfrastructure)optionsBuilder).AddOrUpdateExtension(extension);

        return(optionsBuilder);
    }
示例#2
0
 public EsiurProxyRewrite(EsiurExtensionOptions ext, ProviderConventionSetBuilderDependencies conventionSetBuilderDependencies)
 {
     _directBindingConvention = new ConstructorBindingConvention(conventionSetBuilderDependencies);
 }