VisualAcademy Tenant 모델 및 데이터베이스 스키마 업데이트
추천 자료: ASP.NET Core 인증 및 권한 부여
이 문서는 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
테이블에 새로운 컬럼들을 추가합니다.
추천 자료: .NET Blazor에 대해 알아보시겠어요? .NET Blazor 알아보기를 확인해보세요!