コード例 #1
0
        public static ISqlProvider Create(string provider)
        {
            //ISqlConverter Factory
            switch (provider)
            {
            case DbSetting.Provider_Oracle:
                if (_oracleConverter == null)
                {
                    _oracleConverter = new OracleProvider();
                }
                return(_oracleConverter);

            case DbSetting.Provider_Odbc:
                if (_odbcConverter == null)
                {
                    _odbcConverter = new ODBCProvider();
                }
                return(_odbcConverter);

            case DbSetting.Provider_SqlClient:
            case DbSetting.Provider_SqlCe:
            default:
                if (_sqlConverter == null)
                {
                    _sqlConverter = new SqlServerProvider();
                }
                return(_sqlConverter);
                //throw new NotSupportedException("This type of database is not supportted now:" + provider);
            }
        }
コード例 #2
0
ファイル: ConverterFactory.cs プロジェクト: hardCTE/Rafy
        public static ISqlProvider Create(string provider)
        {
            //ISqlConverter Factory
            switch (provider)
            {
                case DbSetting.Provider_Odbc:
                    if (_odbcConverter == null) _odbcConverter = new ODBCProvider();
                    return _odbcConverter;

                case DbSetting.Provider_SqlClient:
                case DbSetting.Provider_SqlCe:
                    if (_sqlConverter == null) _sqlConverter = new SqlServerProvider();
                    return _sqlConverter;

                default:
                    if (DbSetting.IsOracleProvider(provider))
                    {
                        if (_oracleConverter == null) _oracleConverter = new OracleProvider();
                        return _oracleConverter;
                    }

                    if (_sqlConverter == null) _sqlConverter = new SqlServerProvider();
                    return _sqlConverter;
            }
        }
コード例 #3
0
 public TrackableDictionarySqlMapper(ISqlProvider sqlProvider,
                                     string tableName,
                                     ColumnDefinition keyColumnDef,
                                     ColumnDefinition[] headKeyColumnDefs = null)
     : this(sqlProvider, tableName, keyColumnDef, null, headKeyColumnDefs)
 {
 }
コード例 #4
0
ファイル: DBTool.cs プロジェクト: ywscr/Dapper.LnskyDB
        public static DbConnection GetConnection(ISqlProvider sqlProvider, string key, ShuffledModel shuffle)
        {
            var connStr = Configuration.GetConnectionString(string.Format(key, shuffle.DBId));

            if (string.IsNullOrEmpty(connStr))
            {
                connStr = Configuration.GetConnectionString(string.Format(key, ""));
            }
            connStr = string.Format(connStr, shuffle.DBId);
            var          connLst = GetRequestConnLst().ConnLst;
            DbConnection conn;

            connLst.TryGetValue(connStr, out conn);
            if (conn == null)
            {
                conn = sqlProvider.GetConnection(connStr);
                connLst.Add(connStr, conn);
            }
            try
            {
                if (conn.State != ConnectionState.Open)
                {
                    conn.Open();
                }
            }
            catch
            {
                conn.Close();
                throw;
            }

            return(conn);
        }
コード例 #5
0
 public TrackableContainerTest(IDbConnectionProvider dbConnectionProvider, ISqlProvider sqlProvider)
     : base(useList: false, useSet: true, useDuplicateCheck: true)
 {
     _db     = dbConnectionProvider;
     _mapper = new TrackableContainerSqlMapper <ITestContainer>(
         sqlProvider,
         new[]
     {
         Tuple.Create("Person", new object[]
         {
             "TrackableContainerPerson",
             new[] { new ColumnDefinition("ContainerId", typeof(int)) }
         }),
         Tuple.Create("Missions", new object[]
         {
             "TrackableContainerMission",
             new ColumnDefinition("MissionId"),
             new[] { new ColumnDefinition("ContainerId", typeof(int)) },
         }),
         Tuple.Create("Aliases", new object[]
         {
             "TrackableContainerAlias",
             new ColumnDefinition("Value", typeof(string), 64),
             new[] { new ColumnDefinition("ContainerId", typeof(int)) }
         }),
     });
     _mapper.ResetTableAsync(_db.Connection, true).Wait();
 }
コード例 #6
0
        ///<summary>Creates a TableSynchronizer for the specified table.</summary>
        public TableSynchronizer(Table table, SchemaMapping mapping, ISqlProvider sqlProvider)
        {
            if (table == null)
            {
                throw new ArgumentNullException("table");
            }
            if (mapping == null)
            {
                throw new ArgumentNullException("mapping");
            }
            if (sqlProvider == null)
            {
                throw new ArgumentNullException("sqlProvider");
            }

            if (table.Schema != mapping.Schema)
            {
                throw new ArgumentException("Table and mapping must have the same schema", "mapping");
            }

            Table       = table;
            Mapping     = mapping;
            SqlProvider = sqlProvider;

            Table.RowAdded     += Table_RowAdded;
            Table.ValueChanged += Table_ValueChanged;
            Table.RowRemoved   += Table_RowRemoved;

            Changes = new ReadOnlyCollection <RowChange>(changes);
        }
コード例 #7
0
 public static SqlQueryBuilder With
     (this ISqlProvider sqlProvider,
     String name,
     Object?value  = null,
     DbType?dbType = null,
     Int32?size    = null) =>
 sqlProvider.Exec().With(name, value, dbType, size);
コード例 #8
0
 protected TrackablePocoTest(IDbConnectionProvider dbConnectionProvider, ISqlProvider sqlProvider)
     : base(useDuplicateCheck: true)
 {
     _db     = dbConnectionProvider;
     _mapper = new TrackablePocoSqlMapper <ITestPoco>(sqlProvider, nameof(TrackablePocoTest));
     _mapper.ResetTableAsync(_db.Connection).Wait();
 }
コード例 #9
0
 public Connection(Action <AfonsoftADOOptions> options)
 {
     _options     = Build(options);
     _sqlProvider = GetProvider(_options.Provider);
     DbConnection = _sqlProvider.Connection;
     ExistConnection();
 }
コード例 #10
0
ファイル: ObjectAccessor.cs プロジェクト: zhanglh1024/MySite
        public void Fill(ISqlProvider sqlProvider, IMappingProvider mappingProvider, IDataReader reader, object entity, ObjectFiller objectFiller)
        {
            foreach (PropertyFiller propertyFiller in objectFiller.PropertyFillers)
            {
                //Console.WriteLine(propertyFiller.Column.ColumnName + ":" + propertyFiller.OutputColumnIndex + ":" + propertyFiller.Column.PropertyAdapter.PropertyName + ":" + propertyFiller.Column.PropertyAdapter.PropertyType);
                //propertyFiller.Column.FillPropertyValue(entityObject, dataReader, propertyFiller.OutputColumnIndex);
                //propertyFiller.getPropertyAdapter().setPropertyValue(object, resultSet.getObject(propertyFiller.getOutputColumnIndex()));

                //为值类型赋值null会出问题
                object value = sqlProvider.ConvertDbValue(reader[propertyFiller.ColumnIndex], propertyFiller.PropertyType);
                if (!(propertyFiller.PropertyType.IsValueType && value == null))
                {
                    Set(entity, propertyFiller.PropertyName, value);
                }
            }
            foreach (ObjectFiller f in objectFiller.ObjectFillers)
            {
                //如果已经有实例,则不需要实例化
                object existsInstance = Get(entity, f.PropertyName);
                if (existsInstance == null)
                {
                    existsInstance = CreateInstance(f.EntityType);
                    Set(entity, f.PropertyName, existsInstance);
                }
                Fill(sqlProvider, mappingProvider, reader, existsInstance, f);
            }
        }
コード例 #11
0
 /// <summary>
 /// 添加 <see cref="ISqlProvider"/>.
 /// </summary>
 /// <param name="provider"> <see cref="ISqlProvider"/>.</param>
 public void AddProvider(ISqlProvider provider)
 {
     lock (_sync)
     {
         _provider.Add(provider);
     }
 }
コード例 #12
0
        /// <summary>
        /// Sets the value by querying the data base (through the given provider)
        /// </summary>
        /// <param name="appendableSelectStatement"></param>
        /// <param name="provider"></param>
        public void SetValue(string appendableSelectStatement, ISqlProvider provider)
        {
            string sql    = string.Format(appendableSelectStatement, ColumnName);
            var    result = provider.ExecuteQuery(sql, SelectOptions.Single)[0];

            Value = result.GetSingleResult();
        }
コード例 #13
0
ファイル: DataBatch.cs プロジェクト: sheitm/DataWings
 internal void DoDelete(ISqlProvider provider)
 {
     for (int i = rows.Count - 1; i >= 0; i--)
     {
         rows[i].DoDelete(provider);
     }
 }
コード例 #14
0
ファイル: DataBatch.cs プロジェクト: sheitm/DataWings
 internal void DoWrite(ISqlProvider provider)
 {
     foreach (var row in rows)
     {
         row.DoWrite(provider);
     }
 }
コード例 #15
0
 /// <summary>
 /// Deletes the row from the database if it has been marked as
 /// deletable through DeleteFirst()
 /// </summary>
 public void DoDelete(ISqlProvider provider)
 {
     if (deleteFirst)
     {
         Delete(provider);
     }
 }
コード例 #16
0
 public BaseDataContext(
     IConnectionProvider connectionProvider,
     ISqlBuilder sqlBuilder,
     ISqlCache sqlCache)
 {
     this.connectionProvider = connectionProvider;
     this.sqlProvider        = new SqlProvider(sqlBuilder, sqlCache);
 }
コード例 #17
0
ファイル: Base.tests.cs プロジェクト: snowinmars/FerOmega
 public void Init()
 {
     InternalGrammarService = FerOmegaInjections.InternalGrammarService;
     TokenizationService    = FerOmegaInjections.TokenizationService;
     AstService             = FerOmegaInjections.AstService;
     SqlGrammarService      = FerOmegaInjections.SqlGrammarService;
     SqlProvider            = FerOmegaInjections.SqlProvider;
 }
コード例 #18
0
 public QuestionRepository(ISqlProvider sqlProvider)
 {
     if (sqlProvider == null)
     {
         throw new ArgumentNullException("sqlProvider");
     }
     _sqlProvider = sqlProvider;
 }
コード例 #19
0
        private static void BuildTrackableDictionaryProperty <TKey, TValue>(ISqlProvider sqlProvider,
                                                                            PropertyItem item,
                                                                            object[] mapperParameters)
        {
            if (mapperParameters.Length != 3 && mapperParameters.Length != 4)
            {
                throw new ArgumentException("The length of mapperParameters should be 3 or 4");
            }

            var mapper = mapperParameters.Length == 3
                             ? new TrackableDictionarySqlMapper <TKey, TValue>(
                sqlProvider,
                (string)mapperParameters[0],
                (ColumnDefinition)mapperParameters[1],
                (ColumnDefinition[])mapperParameters[2])
                             : new TrackableDictionarySqlMapper <TKey, TValue>(
                sqlProvider,
                (string)mapperParameters[0],
                (ColumnDefinition)mapperParameters[1],
                (ColumnDefinition)mapperParameters[2],
                (ColumnDefinition[])mapperParameters[3]);

            item.Mapper = mapper;

            item.BuildCreateTableSql = (dropIfExists) =>
            {
                return(mapper.BuildCreateTableSql(dropIfExists));
            };
            item.BuildSqlForCreate = (container, keyValues) =>
            {
                var value = (IDictionary <TKey, TValue>)item.PropertyInfo.GetValue(container);
                return(value != null
                           ? mapper.BuildSqlForCreate(value, keyValues)
                           : string.Empty);
            };
            item.BuildSqlForDelete = (keyValues) =>
            {
                return(mapper.BuildSqlForDelete(keyValues));
            };
            item.BuildSqlForLoad = (keyValues) =>
            {
                return(mapper.BuildSqlForLoad(keyValues));
            };
            item.LoadAndSetAsync = async(reader, container) =>
            {
                var value = await mapper.LoadAsync(reader);

                item.PropertyInfo.SetValue(container, value);
                return(value != null);
            };
            item.BuildSqlForSave = (tracker, keyValues) =>
            {
                var valueTracker = (TrackableDictionaryTracker <TKey, TValue>)item.TrackerPropertyInfo.GetValue(tracker);
                return(valueTracker.HasChange
                           ? mapper.BuildSqlForSave(valueTracker, keyValues)
                           : string.Empty);
            };
        }
コード例 #20
0
        public SqlTable(ISqlProvider provider, string name)
            : base(name)
        {
            this.provider = provider;
            using (DbCommand cmd = this.provider.SelectTop(this.Name, "", 0))
                this.CreateColumns(cmd);

            this.constructor = Serializable.GetIDataConstructor(typeof(T));
        }
コード例 #21
0
 public TrackableSetValueTest(IDbConnectionProvider dbConnectionProvider, ISqlProvider sqlProvider)
     : base(useDuplicateCheck: true)
 {
     _db = dbConnectionProvider;
     _mapper = new TrackableSetSqlMapper<int>(
         sqlProvider,
         nameof(TrackableSetValueTest),
         new ColumnDefinition("Value", typeof(int)),
         null);
     _mapper.ResetTableAsync(_db.Connection).Wait();
 }
コード例 #22
0
ファイル: DbHelper.cs プロジェクト: zhanglh1024/MySite
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="sqlProvider">需要传入类型,考虑到动态生成DbSession,不能用泛型</param>
 /// <param name="connectionString">数据库连接字符串</param>
 /// <param name="sqlTracers">可以指定多个sql语句跟踪器,如果为null则不会有任何追踪</param>
 public DbHelper(ISqlProvider sqlProvider, string connectionString, ISqlTracer[] sqlTracers)
 {
     if (sqlProvider == null)
     {
         throw new ArgumentNullException("sqlProvider");
     }
     SqlProvider = sqlProvider;
     Connection  = SqlProvider.CreateConnection();
     Connection.ConnectionString = connectionString;
     SqlTracers = sqlTracers;
 }
コード例 #23
0
 public TrackableSetValueTest(IDbConnectionProvider dbConnectionProvider, ISqlProvider sqlProvider)
     : base(useDuplicateCheck: true)
 {
     _db     = dbConnectionProvider;
     _mapper = new TrackableSetSqlMapper <int>(
         sqlProvider,
         nameof(TrackableSetValueTest),
         new ColumnDefinition("Value", typeof(int)),
         null);
     _mapper.ResetTableAsync(_db.Connection).Wait();
 }
コード例 #24
0
        public TrackableContainerSqlMapper(ISqlProvider sqlProvider, Tuple <string, object[]>[] mapperParameters)
        {
            _sqlProvider = sqlProvider;

            _trackableType = TrackableResolver.GetContainerTrackerType(typeof(T));
            if (_trackableType == null)
            {
                throw new ArgumentException($"Cannot find tracker type of '{nameof(T)}'");
            }

            _items = ConstructPropertyItems(sqlProvider, mapperParameters);
        }
コード例 #25
0
 public static T SelectSingle <T>(ISqlProvider provider, string name, string where) where T : ISerializable
 {
     using (SqlTable <T> table = new SqlTable <T>(provider, name))
     {
         T[] res = table.Select(where);
         if (res.Length > 0)
         {
             return(res[0]);
         }
     }
     return(default(T));
 }
コード例 #26
0
 protected virtual void Dispose(bool disposing)
 {
     if (disposing)
     {
         if (this._connectionCreatedBySelf && this._connection != null)
         {
             this._connection.Dispose();
         }
         this._connection = null;
         this._converter  = null;
         this._factory    = null;
     }
 }
コード例 #27
0
        public void BootstrapDb()
        {
            Config.Global.DbConfigProvider   = new TestDbConfigProvider();
            Config.Global.DefaultSqlProvider = new DefaultSqlProvider();

            provider = Config.Global.DefaultSqlProvider;

            using (ScribeContext con = new ScribeContext())
            {
                var tableAttribute = TableAttribute.GetFor <Employee>();
                var meta           = ColumnMetadata.GetColumnMetadata <Employee>().Where(x => !x.IsNotMapped).ToList();

                bool employeeTableExists =
                    con.Connection.Query <int>("SELECT COUNT(*) FROM sys.tables where name like 'Employee'").First() == 1;

                if (!employeeTableExists)
                {
                    var employeeTable = provider.FormulateCreateTableStatement <Employee>(tableAttribute,
                                                                                          meta
                                                                                          );

                    con.Connection.Execute(employeeTable);
                    string alterStatement = @"
ALTER TABLE [dbo].[Employee]
DROP COLUMN XmlData;

ALTER TABLE [dbo].[Employee]
	ADD [XmlData] XML NOT NULL;

ALTER TABLE [dbo].[Employee]
	DROP COLUMN [Id];

ALTER TABLE [dbo].[Employee]
	ADD [Id] INT NOT NULL IDENTITY(1,1);

ALTER TABLE [dbo].[Employee]
	ADD CONSTRAINT PK_Employee PRIMARY KEY ([Id]);"    ;

                    con.Connection.Execute(alterStatement);
                }
                string truncateStatement = @"
TRUNCATE TABLE [dbo].[Employee]
";

                con.Connection.Execute(truncateStatement);



                con.Commit();
            }
        }
コード例 #28
0
        public TrackableSetSqlMapper(ISqlProvider sqlProvider,
                                     string tableName,
                                     ColumnDefinition valueColumnDef,
                                     ColumnDefinition[] headKeyColumnDefs = null)
        {
            _sqlProvider = sqlProvider;

            _tableName        = tableName;
            _tableEscapedName = _sqlProvider.EscapeName(tableName);

            var allColumns        = new List <ColumnProperty>();
            var headKeyColumns    = new List <ColumnProperty>();
            var primaryKeyColumns = new List <ColumnProperty>();

            // add head key columns

            if (headKeyColumnDefs != null)
            {
                foreach (var headKeyColumnDef in headKeyColumnDefs)
                {
                    var column = new ColumnProperty(
                        name: headKeyColumnDef.Name,
                        escapedName: _sqlProvider.EscapeName(headKeyColumnDef.Name),
                        type: headKeyColumnDef.Type,
                        length: headKeyColumnDef.Length,
                        convertToSqlValue: _sqlProvider.GetConvertToSqlValueFunc(headKeyColumnDef.Type));

                    headKeyColumns.Add(column);
                    primaryKeyColumns.Add(column);
                    allColumns.Add(column);
                }
            }

            // add value column

            _valueColumn = new ColumnProperty(
                name: valueColumnDef.Name,
                escapedName: _sqlProvider.EscapeName(valueColumnDef.Name),
                type: typeof(T),
                length: valueColumnDef.Length,
                convertToSqlValue: _sqlProvider.GetConvertToSqlValueFunc(typeof(T)),
                convertFromDbValue: _sqlProvider.GetConvertFromDbValueFunc(typeof(T)));

            primaryKeyColumns.Add(_valueColumn);
            allColumns.Add(_valueColumn);

            _allColumns     = allColumns.ToArray();
            _headKeyColumns = headKeyColumns.ToArray();

            _allColumnString = string.Join(",", _allColumns.Select(c => c.EscapedName));
        }
コード例 #29
0
        private static void BuildTrackablePocoProperty <TPoco>(ISqlProvider sqlProvider,
                                                               PropertyItem item,
                                                               object[] mapperParameters)
            where TPoco : ITrackablePoco <TPoco>
        {
            if (mapperParameters.Length != 2)
            {
                throw new ArgumentException("The length of mapperParameters should be 2");
            }

            var mapper = new TrackablePocoSqlMapper <TPoco>(sqlProvider,
                                                            (string)mapperParameters[0],
                                                            (ColumnDefinition[])mapperParameters[1]);

            item.Mapper = mapper;

            item.BuildCreateTableSql = (dropIfExists) =>
            {
                return(mapper.BuildCreateTableSql(dropIfExists));
            };
            item.BuildSqlForCreate = (container, keyValues) =>
            {
                var value = (TPoco)item.PropertyInfo.GetValue(container);
                return(value != null
                           ? mapper.BuildSqlForCreate(value, keyValues)
                           : string.Empty);
            };
            item.BuildSqlForDelete = (keyValues) =>
            {
                return(mapper.BuildSqlForDelete(keyValues));
            };
            item.BuildSqlForLoad = (keyValues) =>
            {
                return(mapper.BuildSqlForLoad(keyValues));
            };
            item.LoadAndSetAsync = async(reader, container) =>
            {
                var value = await mapper.LoadAsync(reader);

                item.PropertyInfo.SetValue(container, value);
                return(value != null);
            };
            item.BuildSqlForSave = (tracker, keyValues) =>
            {
                var valueTracker = (TrackablePocoTracker <TPoco>)item.TrackerPropertyInfo.GetValue(tracker);
                return(valueTracker.HasChange
                           ? mapper.BuildSqlForSave(valueTracker, keyValues)
                           : string.Empty);
            };
        }
コード例 #30
0
 public TrackableSetValueWithHeadKeysTest(IDbConnectionProvider dbConnectionProvider, ISqlProvider sqlProvider)
     : base(useDuplicateCheck: true)
 {
     _db = dbConnectionProvider;
     _mapper = new TrackableSetSqlMapper<int>(
         sqlProvider,
         nameof(TrackableSetValueWithHeadKeysTest),
         new ColumnDefinition("Value", typeof(int)),
         new[]
         {
             new ColumnDefinition("Head1", typeof(int)),
             new ColumnDefinition("Head2", typeof(string), 100)
         });
     _mapper.ResetTableAsync(_db.Connection).Wait();
 }
コード例 #31
0
 public TrackableContainerIgnoreTest(IDbConnectionProvider dbConnectionProvider, ISqlProvider sqlProvider)
 {
     _db = dbConnectionProvider;
     _mapper = new TrackableContainerSqlMapper<ITestContainerWithIgnore>(
         sqlProvider,
         new[]
         {
             Tuple.Create("Person", new object[]
             {
                 "TrackableContainerIgnoreTestPerson",
                 new[] { new ColumnDefinition("ContainerId", typeof(int)) }
             }),
         });
     _mapper.ResetTableAsync(_db.Connection, true).Wait();
 }
コード例 #32
0
ファイル: DataSyncContext.cs プロジェクト: zeroxist/Libraries
        ///<summary>Creates a new DataSyncContext for the given DataContext.</summary>
        public DataSyncContext(DataContext context, ISqlProvider sqlProvider)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }
            if (sqlProvider == null)
            {
                throw new ArgumentNullException("sqlProvider");
            }

            DataContext = context;
            SqlProvider = sqlProvider;

            Tables = new TableSynchronizerCollection(this);
        }
コード例 #33
0
ファイル: DbAccesser.cs プロジェクト: zhuwansu/Rafy
        private void Init(DbConnectionSchema schema, IDbConnection connection = null)
        {
            this._connectionSchema = schema;

            this._factory   = DbConnectorFactory.GetFactory(schema.ProviderName);
            this._converter = DbConnectorFactory.Create(schema.ProviderName);
            if (connection == null)
            {
                this._connection = this._factory.CreateConnection();
                this._connection.ConnectionString = schema.ConnectionString;
                this._connectionCreatedBySelf     = true;
            }
            else
            {
                this._connection = connection;
            }
        }
コード例 #34
0
        /// <summary>
        /// 创建指定的链接字符串的转换器
        /// </summary>
        /// <param name="provider">指定的数据库的提供程序</param>
        /// <returns>返回针对指定数据库的 ISqlProvider 类型的具体对象实例</returns>
        public static ISqlProvider Create(string provider)
        {
            //ISqlConverter Factory
            switch (provider)
            {
            case DbSetting.Provider_Odbc:
                if (_odbcConverter == null)
                {
                    _odbcConverter = new ODBCProvider();
                }
                return(_odbcConverter);

            case DbSetting.Provider_SqlClient:
            case DbSetting.Provider_SqlCe:
            case DbSetting.Provider_SQLite:
                if (_sqlConverter == null)
                {
                    _sqlConverter = new SqlServerProvider();
                }
                return(_sqlConverter);

            //PatrickLiu 增加的有关 MySql 的代码
            case DbSetting.Provider_MySql:
                if (_mySqlConverter == null)
                {
                    _mySqlConverter = new MySqlServerProvider();
                }
                return(_mySqlConverter);

            default:
                if (DbSetting.IsOracleProvider(provider))
                {
                    if (_oracleConverter == null)
                    {
                        _oracleConverter = new OracleProvider();
                    }
                    return(_oracleConverter);
                }

                if (_sqlConverter == null)
                {
                    _sqlConverter = new SqlServerProvider();
                }
                return(_sqlConverter);
            }
        }
コード例 #35
0
ファイル: ConverterFactory.cs プロジェクト: 569550384/Rafy
        public static ISqlProvider Create(string provider)
        {
            //ISqlConverter Factory
            switch (provider)
            {
                case DbSetting.Provider_Oracle:
                    if (_oracleConverter == null) _oracleConverter = new OracleProvider();
                    return _oracleConverter;

                case DbSetting.Provider_Odbc:
                    if (_odbcConverter == null) _odbcConverter = new ODBCProvider();
                    return _odbcConverter;

                case DbSetting.Provider_SqlClient:
                case DbSetting.Provider_SqlCe:
                default:
                    if (_sqlConverter == null) _sqlConverter = new SqlServerProvider();
                    return _sqlConverter;
                //throw new NotSupportedException("This type of database is not supportted now:" + provider);
            }
        }
コード例 #36
0
ファイル: DataBatch.cs プロジェクト: sheitm/DataWings
 internal void DoDelete(ISqlProvider provider)
 {
     for (int i = rows.Count - 1; i >= 0; i--)
     {
         rows[i].DoDelete(provider);
     }
 }
コード例 #37
0
ファイル: DataBatch.cs プロジェクト: sheitm/DataWings
 internal void DoWrite(ISqlProvider provider)
 {
     foreach (var row in rows)
     {
         row.DoWrite(provider);
     }
 }
コード例 #38
0
 /// <summary>
 /// Initializes a new instance of the <see cref="AccumulativeAssertion"/> class.
 /// </summary>
 /// <param name="SqlProvider">The SQL provider.</param>
 public AccumulativeAssertion(ISqlProvider SqlProvider)
 {
     this.sqlProvider = SqlProvider;
 }
コード例 #39
0
ファイル: DataRow.cs プロジェクト: sheitm/DataWings
        /// <summary>
        /// Writes the data accumulated in this row to the database.
        /// </summary>
        public void DoWrite(ISqlProvider provider)
        {
            if (delete)
            {
                Delete(provider);
            }
            else
            {
                string statement = update ? GetUpdateStatement(provider.Vendor) : GetInsertStatement(provider.Vendor);
                provider.ExecuteNonQuery(statement);
            }

            string appendableSql = GetSelectStatementForReturnValueCommand();
            foreach (var command in _returnValueCommands)
            {
                command.SetValue(appendableSql, provider);
            }
        }
コード例 #40
0
ファイル: SqlDriver.cs プロジェクト: SaladLab/TrackableData
        public SqlDriver(ISqlProvider sqlProvider, DbConnection connection)
        {
            var HeadKeyColumnDefs = new[] { new ColumnDefinition("Uid", typeof(int)) };

            _userMapper = new TrackableContainerSqlMapper<IUser>(
                MsSqlProvider.Instance,
                new[]
                {
                    Tuple.Create("Data", new object[]
                    {
                        "tblUser",
                        HeadKeyColumnDefs
                    }),
                    Tuple.Create("Items", new object[]
                    {
                        "tblItem",
                        new ColumnDefinition("ItemId"),
                        HeadKeyColumnDefs
                    }),
                    Tuple.Create("Teams", new object[]
                    {
                        "tblTeam",
                        new ColumnDefinition("TeamId"),
                        HeadKeyColumnDefs
                    }),
                    Tuple.Create("Tanks", new object[]
                    {
                        "tblTank",
                        new ColumnDefinition("TankId"),
                        HeadKeyColumnDefs
                    }),
                    Tuple.Create("Cards", new object[]
                    {
                        "tblCard",
                        new ColumnDefinition("GroupNo"),
                        new ColumnDefinition("States"),
                        HeadKeyColumnDefs
                    }),
                    Tuple.Create("Friends", new object[]
                    {
                        "tblFriend",
                        new ColumnDefinition("FriendUid"),
                        HeadKeyColumnDefs
                    }),
                    Tuple.Create("Missions", new object[]
                    {
                        "tblMission",
                        new ColumnDefinition("MissionId"),
                        HeadKeyColumnDefs
                    }),
                    Tuple.Create("StageGrades", new object[]
                    {
                        "tblStageGrade",
                        new ColumnDefinition("GroupNo"),
                        new ColumnDefinition("Grades"),
                        HeadKeyColumnDefs
                    }),
                    Tuple.Create("Posts", new object[]
                    {
                        "tblPost",
                        new ColumnDefinition("PostId"),
                        HeadKeyColumnDefs
                    }),
                });

            _connection = connection;
        }
コード例 #41
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SqlBasedAccumulativeAssertion"/> class.
 /// </summary>
 /// <param name="SqlProvider">The SQL provider.</param>
 public SqlBasedAccumulativeAssertion(ISqlProvider SqlProvider)
     : base(SqlProvider)
 {
 }
コード例 #42
0
ファイル: DbAccesser.cs プロジェクト: hardCTE/Rafy
        protected virtual void Dispose(bool disposing)
        {
            if (disposing)
            {
                //if (this._transaction != null)
                //{
                //    this._transaction.Dispose();
                //}
                if (this._connectionCreatedBySelf && this._connection != null)
                {
                    this._connection.Dispose();
                }
                this._connection = null;
                this._converter = null;
                this._factory = null;

                //this._transaction = null;
            }
        }
コード例 #43
0
ファイル: SqlBuilder.cs プロジェクト: xiaoyvr/dblinq
 private static SqlStatement BuildExpression(ISqlProvider sqlProvider, InputParameterExpression inputParameterExpression)
 {
     var alias = inputParameterExpression.Alias;
     if (inputParameterExpression.IsMutiple)
     {
         var parameterss = ((IEnumerable) inputParameterExpression.GetValue()).Cast<object>();
         var statements = parameterss.Select((p, id) =>
                                                 {
                                                     var nameBase = string.Format("{0}{1}", alias, id);
                                                     return new SqlStatement(new SqlParameterPart(sqlProvider.GetParameterName(nameBase), nameBase));
                                                 }).ToArray();
         return new SqlStatement(sqlProvider.GetLiteral(statements));
     }
     return new SqlStatement(new SqlParameterPart(sqlProvider.GetParameterName(alias), alias));
 }
コード例 #44
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ExecutableAdversary"/> class.
 /// </summary>
 /// <param name="SqlProvider">The SQL provider.</param>
 /// <param name="tableName">Name of the table.</param>
 public ExecutableAdversary(ISqlProvider SqlProvider, string tableName)
 {
     this.SqlProvider = SqlProvider;
     this.tableName = tableName;
 }
コード例 #45
0
 /// <summary>
 /// Sets the value by querying the data base (through the given provider)
 /// </summary>
 /// <param name="appendableSelectStatement"></param>
 /// <param name="provider"></param>
 public void SetValue(string appendableSelectStatement, ISqlProvider provider)
 {
     string sql = string.Format(appendableSelectStatement, ColumnName);
     var result = provider.ExecuteQuery(sql, SelectOptions.Single)[0];
     Value = result.GetSingleResult();
 }
コード例 #46
0
ファイル: DataRow.cs プロジェクト: sheitm/DataWings
 private void Delete(ISqlProvider provider)
 {
     provider.ExecuteNonQuery(GetDeleteStatement());
 }
コード例 #47
0
 /// <summary>
 /// Initializes a new instance of the <see cref="AccumulativeAssertion"/> class.
 /// </summary>
 /// <param name="SqlProvider">The SQL provider.</param>
 /// <param name="tableName">Name of the table.</param>
 public AccumulativeAssertion(ISqlProvider SqlProvider, string tableName)
     : this(SqlProvider)
 {
     TableName = tableName;
 }
コード例 #48
0
ファイル: DataRow.cs プロジェクト: sheitm/DataWings
 /// <summary>
 /// Deletes the row from the database if it has been marked as
 /// deletable through DeleteFirst()
 /// </summary>
 public void DoDelete(ISqlProvider provider)
 {
     if (deleteFirst)
     {
         Delete(provider);
     }
 }
コード例 #49
0
ファイル: DbAccesser.cs プロジェクト: hardCTE/Rafy
        private void Init(DbConnectionSchema schema, IDbConnection connection = null)
        {
            this._connectionSchema = schema;

            this._factory = ConverterFactory.GetFactory(schema.ProviderName);
            this._converter = ConverterFactory.Create(schema.ProviderName);
            if (connection == null)
            {
                this._connection = this._factory.CreateConnection();
                this._connection.ConnectionString = schema.ConnectionString;
                this._connectionCreatedBySelf = true;
            }
            else
            {
                this._connection = connection;
            }
        }
コード例 #50
0
 protected TypeNullableTest(IDbConnectionProvider dbConnectionProvider, ISqlProvider sqlProvider)
 {
     _db = dbConnectionProvider;
     _mapper = new TrackablePocoSqlMapper<ITypeNullableTestPoco>(sqlProvider, nameof(TypeNullableTest));
     _mapper.ResetTableAsync(_db.Connection).Wait();
 }