コード例 #1
0
        private void tbtnTest_Click(object sender, EventArgs e)
        {
            var item     = lstProvider.SelectedItems[0];
            var provider = ProviderHelper.GetDefinedProviderInstance(item.Group);

            if (provider == null)
            {
                MessageBoxHelper.ShowError(string.Format("没有发现 {0} 的数据库适配器。", item.Group));
            }

            using (var db = new Fireasy.Data.Database(item.Cells[1].Value.ToString(), provider))
            {
                try
                {
                    var exp = db.TryConnect();
                    if (exp == null)
                    {
                        MessageBoxHelper.ShowInformation(string.Format("{0} 连接成功。", item.Text));
                    }
                    else
                    {
                        throw exp;
                    }
                }
                catch (Exception exp)
                {
                    MessageBoxHelper.ShowError(string.Format("{0} 连接失败。详细信息如下:\n\n{1}", item.Text, exp.Message));
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// 尝试从配置文件中配置 <see cref="EntityContextOptions"/> 实例。
        /// </summary>
        /// <param name="options"></param>
        protected virtual void TryPaserInstanceSetting(EntityContextOptions options)
        {
            if (options.Provider == null && options.ConnectionString == null)
            {
                var section = ConfigurationUnity.GetSection <InstanceConfigurationSection>();
                if (section != null)
                {
                    IInstanceConfigurationSetting setting;

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

                    if (setting != null)
                    {
                        options.Provider         = ProviderHelper.GetDefinedProviderInstance(setting);
                        options.ConnectionString = setting.ConnectionString;
                    }
                }
            }
        }
コード例 #3
0
 public void GetSupportedProvidersTest()
 {
     foreach (var name in ProviderHelper.GetSupportedProviders())
     {
         Console.WriteLine(name);
         var provider = ProviderHelper.GetDefinedProviderInstance(name);
         Assert.IsNotNull(provider);
     }
 }
コード例 #4
0
ファイル: SourceProvider.cs プロジェクト: faib920/codebuilder
        private List <Table> GetDbSchema(IList <Table> tables, TableSchemaProcessHandler processHandler)
        {
            var result   = new List <Table>();
            var provider = ProviderHelper.GetDefinedProviderInstance(con.Type);

            using (var db = new Fireasy.Data.Database(con.ConnectionString, provider))
            {
                var providerName = db.Provider.GetType().Name;
                var schema       = db.Provider.GetService <Schema.ISchemaProvider>();
                var foreignKeys  = schema.GetSchemas <Schema.ForeignKey>(db).ToList();
                var dbTypes      = schema.GetSchemas <Schema.DataType>(db).ToList();
                var tableCount   = tables.Count;
                var index        = 0;

                var calc = new Func <int, int>(i =>
                {
                    return((int)((i / (tableCount * 1.0)) * 100));
                });

                var host = new Host();

                foreach (var t in tables)
                {
                    if (Processor.IsCancellationRequested())
                    {
                        return(null);
                    }

                    if (processHandler != null)
                    {
                        processHandler.Invoke(t.Name, calc(++index));
                    }

                    if (t.IsView)
                    {
                        var columns = schema.GetSchemas <Schema.ViewColumn>(db, s => s.ViewName == t.Name);
                        t.Columns.AddRange(ConvertSchemaViewColumns(t, columns, dbTypes, providerName));
                        result.Add(t);
                    }
                    else
                    {
                        var columns = schema.GetSchemas <Schema.Column>(db, s => s.TableName == t.Name);
                        t.Columns.AddRange(ConvertSchemaColumns(t, columns, dbTypes, providerName));
                        result.Add(t);
                    }
                    host.Attach(t);
                }

                ProcessForeignKeys(result, foreignKeys);
            }

            return(result);
        }
コード例 #5
0
ファイル: EntityContext.cs プロジェクト: indiff/fireasy2
        /// <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;
            }
        }
コード例 #6
0
        private void btnTest_Click(object sender, EventArgs e)
        {
            errorProvider1.Clear();
            if (txtConnStr.Text.Trim() == string.Empty)
            {
                errorProvider1.SetError(txtConnStr, "请输入数据库连接字符串");
                return;
            }

            var sourceName = txtName.Text;

            if (string.IsNullOrEmpty(sourceName))
            {
                sourceName = "未命名";
            }

            var provider = ProviderHelper.GetDefinedProviderInstance(Current.Type);

            if (provider == null)
            {
                MessageBoxHelper.ShowError(string.Format("没有发现 {0} 的数据库适配器。", Current.Type));
            }

            using (var db = new Fireasy.Data.Database(txtConnStr.Text, provider))
            {
                try
                {
                    var exp = db.TryConnect();
                    if (exp == null)
                    {
                        MessageBoxHelper.ShowInformation(string.Format("{0} 连接成功。", sourceName));
                    }
                    else
                    {
                        throw exp;
                    }
                }
                catch (Exception exp)
                {
                    MessageBoxHelper.ShowError(string.Format("{0} 连接失败。详细信息如下:\n\n{1}", sourceName, exp.Message));
                }
            }
        }
コード例 #7
0
 private IEnumerable <Table> OpenDb()
 {
     try
     {
         var provider = ProviderHelper.GetDefinedProviderInstance(con.Type);
         using (var db = new Fireasy.Data.Database(con.ConnectionString, provider))
         {
             var schemaName = db.Provider.GetConnectionParameter(db.ConnectionString).Schema;
             var schema     = db.Provider.GetService <Schema.ISchemaProvider>();
             var tables     = schema.GetSchemas <Schema.Table>(db, s => s.Schema == schemaName);
             return(ConvertSchemaTables(tables));
         }
     }
     catch (Exception exp)
     {
         ErrorMessageBox.Show("获取数据架构时出错。", exp);
         return(null);
     }
 }
コード例 #8
0
ファイル: SourceProvider.cs プロジェクト: faib920/codebuilder
 private IEnumerable <Table> OpenDb(SourceOption option)
 {
     try
     {
         var provider = ProviderHelper.GetDefinedProviderInstance(con.Type);
         using (var db = new Fireasy.Data.Database(con.ConnectionString, provider))
         {
             var schema = db.Provider.GetService <Schema.ISchemaProvider>();
             var tables = schema.GetSchemas <Schema.Table>(db).ToList();
             var views  = option.View ? schema.GetSchemas <Schema.View>(db).ToList() : new List <Schema.View>();
             return(ConvertSchemaTables(tables, views));
         }
     }
     catch (Exception exp)
     {
         ErrorMessageBox.Show("获取数据架构时出错。", exp);
         return(null);
     }
 }
コード例 #9
0
 public void GetDefinedProviderInstanceTest()
 {
     Assert.IsNotNull(ProviderHelper.GetDefinedProviderInstance("MsSql"));
 }
コード例 #10
0
        /// <summary>
        /// 获取 IProvidre,如果没有 setting,则获取预定义类别的 IProvider 单例。
        /// </summary>
        /// <param name="setting">数据库实例配置对象。</param>
        /// <param name="providerSetting">提供者配置对象。</param>
        /// <returns>一个提供者对象。</returns>
        private static IProvider GetProvider(IInstanceConfigurationSetting setting, ProviderConfigurationSetting providerSetting)
        {
            var providerName = providerSetting != null ? providerSetting.Name : setting.ProviderType;

            return(ProviderHelper.GetDefinedProviderInstance(providerName));
        }