/// <summary>
 /// 转换为数据库实体
 /// </summary>
 /// <param name="dto">数据库数据传输对象</param>
 public static Database ToEntity2(this DatabaseDto dto)
 {
     if (dto == null)
     {
         return(new Database());
     }
     return(new Database(dto.Id.ToGuid())
     {
         UserId = dto.UserId,
         SolutionId = dto.SolutionId,
         ProjectId = dto.ProjectId,
         Code = dto.Code,
         Name = dto.Name,
         Addreviation = dto.Addreviation,
         DbType = dto.DbType,
         IsDeleted = dto.IsDeleted.SafeValue(),
         Version = dto.Version,
         CreationTime = dto.CreationTime,
         CreatorId = dto.CreatorId,
         LastModificationTime = dto.LastModificationTime,
         LastModifierId = dto.LastModifierId,
         Enabled = dto.Enabled.SafeValue(),
         SortId = dto.SortId,
         Note = dto.Note,
     });
 }
Пример #2
0
        public void GetDatabase_DatabaseServiceReturnsDatabase_ReturnsDatabaseDto()
        {
            // Arrange
            Database database = new Database
            {
                Name = "someDatabase", Tables = { { "firstTable", new Table() }, { "secondTable", new Table() } }
            };

            DatabaseDto dbDto = new DatabaseDto {
                Name = database.Name, TableNames = database.Tables.Keys
            };

            // Arrange - mock dbService
            this._dbServiceMock.Setup(s => s.GetDatabase(database.Name))
            .Returns(database);

            // Arrange - create target
            DatabaseApiController target = new DatabaseApiController(this._dbServiceMock.Object);

            // Act
            IHttpActionResult actionResult = target.GetDatabase(database.Name);
            OkNegotiatedContentResult <DatabaseDto> contentResult = actionResult as OkNegotiatedContentResult <DatabaseDto>;

            // Assert
            Assert.IsNotNull(contentResult);
            Assert.IsNotNull(contentResult.Content);

            Assert.AreEqual(dbDto.Name, contentResult.Content.Name);
            Assert.AreEqual(dbDto.TableNames, contentResult.Content.TableNames);
        }
Пример #3
0
        private async void WindowOnLoad()
        {
            _databaseInfo = await Task.Run(() => _sqlProxy.GetDatabaseData());

            SourceName    = _databaseInfo.SourceName;
            Tables        = new ObservableCollection <TableDto>(_databaseInfo.Tables);
            Queries       = new ObservableCollection <FileInfo>(FileManager.GetFileInfos("SQLQueries"));
            SelectedTable = Tables.FirstOrDefault();
        }
Пример #4
0
        public static DatabaseDto DatabaseDto(string name = null)
        {
            var dto = new DatabaseDto();

            if (!string.IsNullOrEmpty(name))
            {
                dto = dto.WithName(name);
            }
            return(dto);
        }
Пример #5
0
        public DatabaseDto GetDatabaseData()
        {
            DatabaseDto databaseDto = null;

            Execute((proxy) =>
            {
                databaseDto = proxy.GetDatabaseData() as DatabaseDto;
            });

            return(databaseDto);
        }
Пример #6
0
        public void GetDatabase_DatabaseServiceReturnsNull_ReturnsNull()
        {
            // Arrange
            string dbName = "testDatabase";

            // Arrange - mock dbService
            this._dbServiceMock.Setup(s => s.GetDatabase(dbName))
            .Returns((Database)null);

            // Arrange - create target
            DbWcfService target = new DbWcfService(this._dbServiceMock.Object);

            // Act
            DatabaseDto db = target.GetDatabase(dbName);

            // Assert
            Assert.IsNull(db);
        }
Пример #7
0
        public BaseDto GetDatabaseData()
        {
            try
            {
                StringBuilder sb = new StringBuilder();

                DatabaseDto databaseDto = new DatabaseDto();
                databaseDto.SourceName = "PolitermUsers";

                sb.Append("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES ");
                sb.Append("WHERE TABLE_NAME NOT LIKE '__MigrationHistory' ");
                sb.Append("ORDER BY(TABLE_NAME)");

                List <string> tableNames;

                using (PolitermUsers db = new PolitermUsers())
                {
                    tableNames = db.Database.SqlQuery <string>(sb.ToString()).ToList();
                    sb.Clear();

                    foreach (var tableName in tableNames)
                    {
                        sb.AppendLine("SELECT COLUMN_NAME ");
                        sb.AppendLine("FROM INFORMATION_SCHEMA.COLUMNS ");
                        sb.AppendFormat("WHERE TABLE_NAME = '{0}'", tableName);

                        databaseDto.Tables.Add(new TableDto
                        {
                            TableName   = tableName,
                            ColumnNames = db.Database.SqlQuery <string>(sb.ToString()).ToList()
                        });

                        sb.Clear();
                    }
                }

                return(databaseDto);
            }
            catch (Exception ex)
            {
                throw new FaultException <Exception>(ex, ex.Message);
            }
        }
Пример #8
0
        public IHttpActionResult GetDatabase(string dbName)
        {
            try
            {
                Database database = this._databaseService.GetDatabase(dbName);
                if (database == null)
                {
                    return(this.NotFound());
                }

                return(this.Ok(DatabaseDto.CreateFromDatabase(database)));
            }
            catch (ArgumentException)
            {
                return(this.BadRequest());
            }
            catch (DbServiceException)
            {
                return(this.InternalServerError());
            }
        }
Пример #9
0
        public void GetDatabase_DatabaseServiceReturnsDatabase_ReturnsDatabaseDto()
        {
            // Arrange
            Database database = new Database
            {
                Name = "someDatabase", Tables = { { "firstTable", new Table() }, { "secondTable", new Table() } }
            };

            // Arrange - mock dbService
            this._dbServiceMock.Setup(s => s.GetDatabase(database.Name))
            .Returns(database);

            // Arrange - create target
            DbWcfService target = new DbWcfService(this._dbServiceMock.Object);

            // Act
            DatabaseDto dbDto = target.GetDatabase(database.Name);

            // Assert
            Assert.IsNotNull(dbDto);

            Assert.AreEqual(dbDto.Name, database.Name);
            Assert.AreEqual(dbDto.TableNames, database.Tables.Keys);
        }
Пример #10
0
        private DatabaseDto GetTables(SqlConnection conn, DatabaseDto database)
        {
            var sqlCommand = $"SELECT TABLE_NAME FROM {database.Name}.INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE'";

            using (var command = new SqlCommand(sqlCommand, conn))
            {
                using (var dataReader = command.ExecuteReader())
                {
                    while (dataReader.Read())
                    {
                        if (dataReader.FieldCount != 1)
                        {
                            throw new IndexOutOfRangeException($"Expected 3 fields, but was actually {dataReader.FieldCount}");
                        }
                        if (!(dataReader[0] is string tableName))
                        {
                            throw new InvalidDataException("Unable to convert table name to string");
                        }
                        database = GetColumns(conn, database, DatabaseFactory.TableDto(tableName));
                    }
                }
                return(database);
            }
        }
Пример #11
0
        private DatabaseDto GetColumns(SqlConnection conn, DatabaseDto database, TableDto table)
        {
            var sqlCommand = $"SELECT COLUMN_NAME, DATA_TYPE, ORDINAL_POSITION FROM {database.Name}.INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @TableName";

            using (var command = new SqlCommand(sqlCommand, conn))
            {
                command.Parameters.AddWithValue("@TableName", table.Name);
                using (var dataReader = command.ExecuteReader())
                {
                    var columns = new List <ColumnDto>();
                    while (dataReader.Read())
                    {
                        if (dataReader.FieldCount != 3)
                        {
                            throw new IndexOutOfRangeException($"Expected 3 fields, but was actually {dataReader.FieldCount}");
                        }
                        if (!(dataReader[0] is string columnName))
                        {
                            throw new InvalidDataException("Unable to convert column name to string");
                        }
                        if (!(dataReader[1] is string dataType))
                        {
                            throw new InvalidDataException("Unable to convert column data type to string");
                        }
                        if (!(dataReader[2] is int ordinalPosition))
                        {
                            throw new InvalidDataException("Unable to convert column ordinal position to string");
                        }
                        var column = DatabaseFactory.ColumnDto(columnName).WithDataType(dataType).WithOrdinalPosition(ordinalPosition);
                        columns.Add(column);
                    }
                    table = table.WithColumns(columns);
                }
                return(database.AddTables(table));
            }
        }
Пример #12
0
        public DatabaseDto GetDatabase(string dbName)
        {
            Database database = this._databaseService.GetDatabase(dbName);

            return(database == null ? null : DatabaseDto.CreateFromDatabase(database));
        }