Пример #1
0
        /// <summary>
        /// 从现有的 <see cref="IServiceCollection"/> 里添加 <see cref="EntityContext"/> 对象。
        /// </summary>
        /// <param name="setupAction"></param>
        /// <returns></returns>
        public static EntityContextOptionsBuilder AddEntityContext(this IServiceCollection services, Action <EntityContextOptions> setupAction = null)
        {
            var options = new EntityContextOptions();

            setupAction?.Invoke(options);

            var builder = new EntityContextOptionsBuilder(options);

            if (services is ServiceCollection coll)
            {
                var desc = coll.FirstOrDefault(s => typeof(EntityContext).IsAssignableFrom(s.ServiceType));
                if (desc != null)
                {
                    services.Remove(desc);

                    if (setupAction != null)
                    {
                        services.Configure(setupAction);
                    }

                    services.AddScoped(desc.ServiceType);
                    services.AddScoped(s => options);

                    return(builder);
                }
            }

            return(builder);
        }
Пример #2
0
 public TestContext(IServiceProvider serviceProvider, EntityContextOptions <TestContext> options, ILogger logger)
     : base(serviceProvider, options)
 {
     if (sp == null)
     {
         sp = serviceProvider;
     }
 }
Пример #3
0
 public EntityContext(EntityContextOptions options)
 {
     _options                = options ?? throw new ArgumentException(nameof(options));
     _pathBuilder            = new PathBuilder(options);
     _resolver               = new EntityResolver();
     _hierarchyCollection    = new HierarchyCollection(options.Collections, _resolver, _pathBuilder);
     _relationshipCollection = new RelationshipCollection(options.Collections, _resolver);
     _recycleBinCollection   = new RecycleBinCollection(options.Collections);
 }
Пример #4
0
        public static IServiceCollection AddEntityContext <T>(this IServiceCollection services, Action <EntityContextOptions <T> > setupAction = null)
            where T : EntityContext
        {
            var options = new EntityContextOptions <T>();

            setupAction?.Invoke(options);

            return(services
                   .AddSingleton(options)
                   .AddScoped <T>());
        }
Пример #5
0
        /// <summary>
        /// 使 <see cref="IServiceCollection"/> 能够使用 Fireasy 中的 <see cref="EntityContext"/> 对象。
        /// </summary>
        /// <param name="services"></param>
        /// <param name="setupAction"></param>
        /// <returns></returns>
        public static EntityContextOptionsBuilder AddEntityContext <TContext>(this IServiceCollection services, Action <EntityContextOptions> setupAction = null) where TContext : EntityContext
        {
            var options = new EntityContextOptions();

            setupAction?.Invoke(options);

            var builder = new EntityContextOptionsBuilder(options);

            if (setupAction != null)
            {
                services.Configure(setupAction);
            }

            services.AddScoped(s => options);
            services.AddScoped <TContext>();

            return(builder);
        }
Пример #6
0
 public TestContext(EntityContextOptions options)
     : base(options)
 {
 }
Пример #7
0
 IRepository IRepositoryProvider.CreateRepository(EntityContextOptions options)
 {
     return(new EntityRepository <TEntity>(this, options));
 }
 IRepository IRepositoryProvider.CreateRepository(EntityContextOptions options)
 {
     return(_repository ?? (_repository = new EntityRepository <TEntity>(_contextService, this, options)));
 }
Пример #9
0
 public DbContext(EntityContextOptions options)
     : base(options)
 {
 }
Пример #10
0
 public TestContext1(IServiceProvider serviceProvider, EntityContextOptions <TestContext1> options)
     : base(serviceProvider, options)
 {
 }
Пример #11
0
 public InternalContext(EntityContextOptions options)
 {
     Options      = options;
     Database     = EntityDatabaseFactory.CreateDatabase(options.ConfigName);
     InstanceName = options.ConfigName;
 }
Пример #12
0
 public PathBuilder(EntityContextOptions options)
 {
     _options = options;
 }
Пример #13
0
 //由于startup中注册了多个 EntityContext,因此这里必须使用泛型的 EntityContextOptions
 //如果只有一个 EntityContext,则可以使用 EntityContextOptions
 public MongodbContext(EntityContextOptions <MongodbContext> options)
     : base(options)
 {
 }