Dreamine.Database.MySql 1.0.1
Dreamine.Database.MySql 데이터베이스 기능과 관련 API를 제공합니다.
로딩중...
검색중...
일치하는것 없음
Dreamine.Database.MySql.MySqlDatabaseProvider 클래스 참조sealed

더 자세히 ...

Dreamine.Database.MySql.MySqlDatabaseProvider에 대한 상속 다이어그램 :
Dreamine.Database.MySql.MySqlDatabaseProvider에 대한 협력 다이어그램:

Public 멤버 함수

 MySqlDatabaseProvider (string connectionString)
override void EnsureDatabaseExists ()
override async Task EnsureDatabaseExistsAsync (CancellationToken cancellationToken=default)
override bool IsTableExists (string tableName)
override async Task< bool > IsTableExistsAsync (string tableName, CancellationToken cancellationToken=default)

Protected 멤버 함수

override IDbConnection CreateConnection ()
override string QuoteIdentifier (string identifier)
override string BuildCreateTableSql (DatabaseEntityMap map)
override string GetSqlType (DatabasePropertyMap property)

속성

override DatabaseProviderKind Kind [get]

상세한 설명

MySQL용 Dreamine 데이터베이스 공급자 구현을 제공합니다.

MySqlDatabaseProvider.cs 파일의 17 번째 라인에서 정의되었습니다.

생성자 & 소멸자 문서화

◆ MySqlDatabaseProvider()

Dreamine.Database.MySql.MySqlDatabaseProvider.MySqlDatabaseProvider ( string connectionString)
inline

지정한 연결 문자열로 MySqlDatabaseProvider의 새 인스턴스를 초기화합니다.

매개변수
connectionStringMySQL 연결 문자열입니다.
예외
ArgumentNullExceptionconnectionStringnull인 경우 발생합니다.
ArgumentExceptionconnectionString 이 비어 있거나 공백인 경우 발생합니다.

MySqlDatabaseProvider.cs 파일의 51 번째 라인에서 정의되었습니다.

52 : base(connectionString)
53 {
54 }

멤버 함수 문서화

◆ BuildCreateTableSql()

override string Dreamine.Database.MySql.MySqlDatabaseProvider.BuildCreateTableSql ( DatabaseEntityMap map)
inlineprotected

자동 증가 키를 지원하는 MySQL CREATE TABLE SQL을 만듭니다.

매개변수
map테이블 엔터티 매핑입니다.
반환값
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 열 형식으로 변환합니다.

매개변수
property변환할 속성 매핑입니다.
반환값
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 데이터베이스에 지정한 테이블이 존재하는지 확인합니다.

매개변수
tableName확인할 테이블 이름입니다.
반환값
테이블 존재 여부입니다.
예외
ArgumentNullExceptiontableNamenull인 경우 발생합니다.
ArgumentExceptiontableName 이 비어 있거나 공백인 경우 발생합니다.

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조회 취소 토큰입니다.
반환값
테이블 존재 여부를 결과로 제공하는 작업입니다.
예외
ArgumentNullExceptiontableNamenull인 경우 발생합니다.
ArgumentExceptiontableName 이 비어 있거나 공백인 경우 발생합니다.

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 백틱 문법으로 식별자를 안전하게 인용합니다.

매개변수
identifier인용할 식별자입니다.
반환값
이스케이프하고 인용한 식별자입니다.
예외
ArgumentNullExceptionidentifiernull인 경우 발생합니다.
ArgumentExceptionidentifier 가 비어 있거나 공백인 경우 발생합니다.

MySqlDatabaseProvider.cs 파일의 319 번째 라인에서 정의되었습니다.

320 {
321 ArgumentException.ThrowIfNullOrWhiteSpace(identifier);
322 return "`" + identifier.Replace("`", "``", StringComparison.Ordinal) + "`";
323 }

속성 문서화

◆ Kind

override DatabaseProviderKind Dreamine.Database.MySql.MySqlDatabaseProvider.Kind
get

MySQL 공급자 종류를 가져옵니다.

MySqlDatabaseProvider.cs 파일의 64 번째 라인에서 정의되었습니다.


이 클래스에 대한 문서화 페이지는 다음의 파일로부터 생성되었습니다.: