VisualAcademy Tenant 모델 및 데이터베이스 스키마 업데이트
이 문서는 VisualAcademy 프로젝트에서 TenantModel 클래스를 업데이트하고, 데이터베이스 스키마를 강화하는 방법에 대해 설명합니다.
1. TenantModel 클래스 업데이트
TenantModel 클래스는 여러 속성을 포함합니다. 이번 업데이트에서는 새로운 속성인 PortalName과 ScreeningPartnerName을 추가합니다.
TenantModel 클래스
using System.ComponentModel.DataAnnotations;
namespace VisualAcademy.Models;
public class TenantModel
{
public long Id { get; set; }
[Display(Name = "Connection String")]
public string? ConnectionString { get; set; }
[Required]
[Display(Name = "Name")]
public string Name { get; set; } = null!;
[Display(Name = "Authentication Header")]
public string? AuthenticationHeader { get; set; }
[Display(Name = "Account ID")]
public string? AccountID { get; set; }
[Display(Name = "Global Search Connection String")]
public string? GSConnectionString { get; set; }
[Display(Name = "Report Writer URL")]
public string? ReportWriterURL { get; set; }
[Display(Name = "Badge Photo Type")]
public string? BadgePhotoType { get; set; }
[Display(Name = "Portal Name")]
public string? PortalName { get; set; }
[Display(Name = "Screening Partner Name")]
public string? ScreeningPartnerName { get; set; }
}
2. DefaultSchemaEnhancerAddColumns 클래스를 이용한 데이터베이스 스키마 갱신
데이터베이스 스키마에 PortalName과 ScreeningPartnerName 컬럼이 존재하지 않는 경우, DefaultSchemaEnhancerAddColumns 클래스를 사용하여 이를 추가할 수 있습니다.
DefaultSchemaEnhancerAddColumns 클래스
using Microsoft.Data.SqlClient;
namespace VisualAcademy.Infrastructures
{
public class DefaultSchemaEnhancerAddColumns
{
private string _defaultConnectionString;
public DefaultSchemaEnhancerAddColumns(string defaultConnectionString)
{
_defaultConnectionString = defaultConnectionString;
}
public void EnhanceDefaultDatabase()
{
AddColumnIfNotExists("Tenants", "PortalName", "nvarchar(max) NULL DEFAULT ('VisualAcademy')");
AddColumnIfNotExists("Tenants", "ScreeningPartnerName", "nvarchar(max) NULL DEFAULT ('VisualAcademy')");
}
private void AddColumnIfNotExists(string tableName, string columnName, string columnDefinition)
{
using (SqlConnection connection = new SqlConnection(_defaultConnectionString))
{
connection.Open();
SqlCommand cmdCheck = new SqlCommand($@"
IF NOT EXISTS (
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @tableName AND COLUMN_NAME = @columnName
)
BEGIN
ALTER TABLE dbo.{tableName} ADD {columnName} {columnDefinition};
END", connection);
cmdCheck.Parameters.AddWithValue("@tableName", tableName);
cmdCheck.Parameters.AddWithValue("@columnName", columnName);
cmdCheck.ExecuteNonQuery();
connection.Close();
}
}
}
}
3. Program.cs에서 DefaultSchemaEnhancerAddColumns 클래스 호출
Program.cs 파일에서 DefaultSchemaEnhancerAddColumns 클래스를 생성하고 EnhanceDefaultDatabase 메서드를 호출하여 데이터베이스 스키마를 강화하는 과정을 수행합니다.
Program.cs 코드 예시
try
{
var schemaEnhancer = new DefaultSchemaEnhancerAddColumns(connectionString);
schemaEnhancer.EnhanceDefaultDatabase();
}
catch (Exception)
{
// 예외 처리 로직
}
이 코드는 Program.cs 파일에 데이터베이스 연결 문자열을 이용하여 DefaultSchemaEnhancerAddColumns 인스턴스를 생성하고, EnhanceDefaultDatabase 메서드를 호출하여 필요한 경우 Tenants 테이블에 새로운 컬럼들을 추가합니다.
추천 자료: ASP.NET Core 인증 및 권한 부여
추천 자료: .NET Blazor에 대해 알아보시겠어요? .NET Blazor 알아보기를 확인해보세요!