Ejemplo n.º 1
0
        public virtual IServiceProvider GetOrAdd(IDbContextOptionsExtensions options)
        {
            var services = new ServiceCollection();
            var builder  = services.AddEntityFramework();

            if (services.All(s => s.ServiceType != typeof(ILoggerFactory)))
            {
                builder.UseLoggerFactory <LoggerFactory>();
            }

            foreach (var extension in options.Extensions)
            {
                extension.ApplyServices(builder);
            }

            // TODO: Consider more robust hashing algorithm
            // Note that no cryptographic algorithm is available on all of phone/store/k/desktop
            // Issue #762
            unchecked
            {
                var key = services.Aggregate(0, (t, d) => (t * 397) ^ CalculateHash(d).GetHashCode());

                return(_configurations.GetOrAdd(key, k => services.BuildServiceProvider()));
            }
        }
Ejemplo n.º 2
0
        public virtual IServiceProvider GetOrAdd(IDbContextOptionsExtensions options)
        {
            var services = new ServiceCollection();
            var builder = services.AddEntityFramework();
            foreach (var extension in options.Extensions)
            {
                extension.ApplyServices(builder);
            }

            // TODO: Consider more robust hashing algorithm
            // Note that no cryptographic algorithm is available on all of phone/store/k/desktop
            unchecked
            {
                var key = services.Aggregate(0, (t, d) => (t * 397) ^ CalculateHash(d).GetHashCode());

                return _configurations.GetOrAdd(key, k => services.BuildServiceProvider());
            }
        }