Ejemplo n.º 1
0
        /// <summary>
        /// 初始化。
        /// </summary>
        private void Initialize(EntityContextOptions options)
        {
            Guard.ArgumentNull(options, nameof(options));

            EntityContextInitializeContext initContext = null;

            if (options.ContextFactory != null)
            {
                initContext = options.ContextFactory();
            }
            else
            {
                var section = ConfigurationUnity.GetSection <InstanceConfigurationSection>();
                if (section != null)
                {
                    IInstanceConfigurationSetting setting;

                    if (!string.IsNullOrEmpty(options.ConfigName))
                    {
                        setting = section.Settings[options.ConfigName];
                    }
                    else
                    {
                        setting = section.Default;
                    }

                    initContext = new EntityContextInitializeContext(options, ProviderHelper.GetDefinedProviderInstance(setting), setting.ConnectionString);
                }
            }

            if (initContext == null || initContext.Provider == null)
            {
                throw new InvalidOperationException(SR.GetString(SRKind.MustAssignEntityContextInitializeContext));
            }

            initContext.Options = options;

            var provider = initContext.Provider.GetService <IContextProvider>();

            service = provider.CreateContextService(initContext);

            if (service != null)
            {
                service.OnRespositoryChanged = OnRespositoryChanged;
            }
        }