더 자세히 ...
|
| override DatabaseProviderKind | Kind [get] |
MySQL용 Dreamine 데이터베이스 공급자 구현을 제공합니다.
MySqlDatabaseProvider.cs 파일의 17 번째 라인에서 정의되었습니다.
◆ MySqlDatabaseProvider()
| Dreamine.Database.MySql.MySqlDatabaseProvider.MySqlDatabaseProvider |
( |
string | connectionString | ) |
|
|
inline |
지정한 연결 문자열로 MySqlDatabaseProvider의 새 인스턴스를 초기화합니다.
- 매개변수
-
| connectionString | MySQL 연결 문자열입니다. |
- 예외
-
| ArgumentNullException | connectionString 이 null인 경우 발생합니다. |
| ArgumentException | connectionString 이 비어 있거나 공백인 경우 발생합니다. |
MySqlDatabaseProvider.cs 파일의 51 번째 라인에서 정의되었습니다.
52 : base(connectionString)
53 {
54 }
◆ BuildCreateTableSql()
| override string Dreamine.Database.MySql.MySqlDatabaseProvider.BuildCreateTableSql |
( |
DatabaseEntityMap | map | ) |
|
|
inlineprotected |
자동 증가 키를 지원하는 MySQL CREATE TABLE SQL을 만듭니다.
- 매개변수
-
- 반환값
- MySQL CREATE TABLE SQL입니다.
MySqlDatabaseProvider.cs 파일의 349 번째 라인에서 정의되었습니다.
350 {
351 var columns = map.Properties.Select(property =>
352 {
353 var sql = $"{QuoteIdentifier(property.ColumnName)} {GetSqlType(property)}";
354 if (property.IsKey)
355 {
356 sql += property.IsGenerated ? " AUTO_INCREMENT PRIMARY KEY" : " PRIMARY KEY";
357 }
358
359 return sql;
360 });
361
362 return $"CREATE TABLE IF NOT EXISTS {QuoteIdentifier(map.TableName)} ({string.Join(", ", columns)})";
363 }
◆ CreateConnection()
| override IDbConnection Dreamine.Database.MySql.MySqlDatabaseProvider.CreateConnection |
( |
| ) |
|
|
inlineprotected |
구성된 연결 문자열을 사용하는 새 MySQL 연결을 만듭니다.
- 반환값
- 닫힌 MySQL 연결입니다.
MySqlDatabaseProvider.cs 파일의 274 번째 라인에서 정의되었습니다.
275 {
276 return new MySqlConnection(ConnectionString);
277 }
◆ EnsureDatabaseExists()
| override void Dreamine.Database.MySql.MySqlDatabaseProvider.EnsureDatabaseExists |
( |
| ) |
|
|
inline |
연결 문자열에 지정된 MySQL 데이터베이스가 없으면 생성합니다.
MySqlDatabaseProvider.cs 파일의 74 번째 라인에서 정의되었습니다.
75 {
76 var builder = new MySqlConnectionStringBuilder(ConnectionString);
77 var databaseName = builder.Database;
78 if (string.IsNullOrWhiteSpace(databaseName))
79 {
80 base.EnsureDatabaseExists();
81 return;
82 }
83
84 builder.Database = string.Empty;
85
86 using var connection = new MySqlConnection(builder.ConnectionString);
87 connection.Open();
88
89 using var command = connection.CreateCommand();
90 command.CommandText = $"CREATE DATABASE IF NOT EXISTS {QuoteIdentifier(databaseName)}";
91 command.ExecuteNonQuery();
92 }
◆ EnsureDatabaseExistsAsync()
| override async Task Dreamine.Database.MySql.MySqlDatabaseProvider.EnsureDatabaseExistsAsync |
( |
CancellationToken | cancellationToken = default | ) |
|
|
inline |
연결 문자열에 지정된 MySQL 데이터베이스가 없으면 비동기적으로 생성합니다.
- 매개변수
-
| cancellationToken | 작업 취소 토큰입니다. |
- 반환값
- 데이터베이스 확인 및 생성 작업입니다.
MySqlDatabaseProvider.cs 파일의 118 번째 라인에서 정의되었습니다.
119 {
120 var builder = new MySqlConnectionStringBuilder(ConnectionString);
121 var databaseName = builder.Database;
122 if (string.IsNullOrWhiteSpace(databaseName))
123 {
124 await base.EnsureDatabaseExistsAsync(cancellationToken).ConfigureAwait(false);
125 return;
126 }
127
128 builder.Database = string.Empty;
129
130 await using var connection = new MySqlConnection(builder.ConnectionString);
131 await connection.OpenAsync(cancellationToken).ConfigureAwait(false);
132
133 await using var command = connection.CreateCommand();
134 command.CommandText = $"CREATE DATABASE IF NOT EXISTS {QuoteIdentifier(databaseName)}";
135 await command.ExecuteNonQueryAsync(cancellationToken).ConfigureAwait(false);
136 }
◆ GetSqlType()
| override string Dreamine.Database.MySql.MySqlDatabaseProvider.GetSqlType |
( |
DatabasePropertyMap | property | ) |
|
|
inlineprotected |
CLR 속성 형식을 대응하는 MySQL 열 형식으로 변환합니다.
- 매개변수
-
- 반환값
- MySQL 열 형식 선언입니다.
MySqlDatabaseProvider.cs 파일의 389 번째 라인에서 정의되었습니다.
390 {
391 var type = property.PropertyType;
392
393 if (type == typeof(bool))
394 {
395 return "TINYINT(1)";
396 }
397
398 if (type == typeof(byte) || type == typeof(short))
399 {
400 return "SMALLINT";
401 }
402
403 if (type == typeof(int))
404 {
405 return "INT";
406 }
407
408 if (type == typeof(long))
409 {
410 return "BIGINT";
411 }
412
413 if (type == typeof(float) || type == typeof(double))
414 {
415 return "DOUBLE";
416 }
417
418 if (type == typeof(decimal))
419 {
420 return "DECIMAL(18, 4)";
421 }
422
423 if (type == typeof(DateTime) || type == typeof(DateTimeOffset))
424 {
425 return "DATETIME";
426 }
427
428 if (type == typeof(byte[]))
429 {
430 return "BLOB";
431 }
432
433 return "TEXT";
434 }
◆ IsTableExists()
| override bool Dreamine.Database.MySql.MySqlDatabaseProvider.IsTableExists |
( |
string | tableName | ) |
|
|
inline |
현재 MySQL 데이터베이스에 지정한 테이블이 존재하는지 확인합니다.
- 매개변수
-
- 반환값
- 테이블 존재 여부입니다.
- 예외
-
| ArgumentNullException | tableName 이 null인 경우 발생합니다. |
| ArgumentException | tableName 이 비어 있거나 공백인 경우 발생합니다. |
MySqlDatabaseProvider.cs 파일의 178 번째 라인에서 정의되었습니다.
179 {
180 ArgumentException.ThrowIfNullOrWhiteSpace(tableName);
181
182 const string sql = """
183 SELECT COUNT(1)
184 FROM information_schema.tables
185 WHERE table_schema = DATABASE()
186 AND table_name = @TableName
187 """;
188
189 return ExecuteScalar<long>(sql, new { TableName = tableName }) > 0;
190 }
◆ IsTableExistsAsync()
| override async Task< bool > Dreamine.Database.MySql.MySqlDatabaseProvider.IsTableExistsAsync |
( |
string | tableName, |
|
|
CancellationToken | cancellationToken = default ) |
|
inline |
현재 MySQL 데이터베이스에 지정한 테이블이 존재하는지 비동기적으로 확인합니다.
- 매개변수
-
| tableName | 확인할 테이블 이름입니다. |
| cancellationToken | 조회 취소 토큰입니다. |
- 반환값
- 테이블 존재 여부를 결과로 제공하는 작업입니다.
- 예외
-
| ArgumentNullException | tableName 이 null인 경우 발생합니다. |
| ArgumentException | tableName 이 비어 있거나 공백인 경우 발생합니다. |
MySqlDatabaseProvider.cs 파일의 240 번째 라인에서 정의되었습니다.
243 {
244 ArgumentException.ThrowIfNullOrWhiteSpace(tableName);
245
246 const string sql = """
247 SELECT COUNT(1)
248 FROM information_schema.tables
249 WHERE table_schema = DATABASE()
250 AND table_name = @TableName
251 """;
252
253 var count = await ExecuteScalarAsync<long>(sql, new { TableName = tableName }, cancellationToken)
254 .ConfigureAwait(false);
255 return count > 0;
256 }
◆ QuoteIdentifier()
| override string Dreamine.Database.MySql.MySqlDatabaseProvider.QuoteIdentifier |
( |
string | identifier | ) |
|
|
inlineprotected |
MySQL 백틱 문법으로 식별자를 안전하게 인용합니다.
- 매개변수
-
- 반환값
- 이스케이프하고 인용한 식별자입니다.
- 예외
-
| ArgumentNullException | identifier 가 null인 경우 발생합니다. |
| ArgumentException | identifier 가 비어 있거나 공백인 경우 발생합니다. |
MySqlDatabaseProvider.cs 파일의 319 번째 라인에서 정의되었습니다.
320 {
321 ArgumentException.ThrowIfNullOrWhiteSpace(identifier);
322 return "`" + identifier.Replace("`", "``", StringComparison.Ordinal) + "`";
323 }
◆ Kind
| override DatabaseProviderKind Dreamine.Database.MySql.MySqlDatabaseProvider.Kind |
|
get |
이 클래스에 대한 문서화 페이지는 다음의 파일로부터 생성되었습니다.: