ShopPlatform.Web 1.0.0.0
농산물, 소프트웨어 라이선스와 개발 용역을 직접 판매하는 CodeMaru 직영 쇼핑몰입니다.
로딩중...
검색중...
일치하는것 없음
ShopPlatform.Data.TenantDbContextFactory 클래스 참조sealed

더 자세히 ...

ShopPlatform.Data.TenantDbContextFactory에 대한 협력 다이어그램:

Public 멤버 함수

 TenantDbContextFactory (ShopOptions opts, ILogger< TenantDbContextFactory > logger)
TenantDbContext Create (string slug)
string GetDbPath (string slug)

Private 멤버 함수

void ApplyColumnMigrations (TenantDbContext ctx)

Private 속성

readonly ShopOptions _opts
readonly ILogger< TenantDbContextFactory_logger

상세한 설명

슬러그별 TenantDbContext 를 생성·마이그레이션. Singleton.

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

생성자 & 소멸자 문서화

◆ TenantDbContextFactory()

ShopPlatform.Data.TenantDbContextFactory.TenantDbContextFactory ( ShopOptions opts,
ILogger< TenantDbContextFactory > logger )
inline

지정한 설정으로 TenantDbContextFactory 클래스의 새 인스턴스를 초기화합니다.

매개변수
optsopts에 사용할 ShopOptions 값입니다.
loggerlogger에 사용할 ILogger<TenantDbContextFactory> 값입니다.

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

60 {
61 _opts = opts;
62 _logger = logger;
63 }

다음을 참조함 : _logger, _opts.

멤버 함수 문서화

◆ ApplyColumnMigrations()

void ShopPlatform.Data.TenantDbContextFactory.ApplyColumnMigrations ( TenantDbContext ctx)
inlineprivate

EnsureCreated는 스키마 변경을 적용하지 않으므로, 모델에 추가된 컬럼을 기존 DB에 수동으로 추가합니다. SQLite는 ALTER TABLE ... ADD COLUMN만 지원 (DROP/MODIFY 불가).

매개변수
ctxctx에 사용할 TenantDbContext 값입니다.

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

121 {
122 // Products 테이블 컬럼 목록 조회
123 var existingColumns = ctx.Database
124 .SqlQueryRaw<string>("SELECT name FROM pragma_table_info('Products')")
125 .ToHashSet(StringComparer.OrdinalIgnoreCase);
126
127 if (!existingColumns.Contains("IsFeatured"))
128 {
129 ctx.Database.ExecuteSqlRaw(
130 "ALTER TABLE Products ADD COLUMN IsFeatured INTEGER NOT NULL DEFAULT 0");
131 _logger.LogInformation("Migration: Products.IsFeatured 컬럼 추가");
132 }
133
134 if (!existingColumns.Contains("SortOrder"))
135 {
136 ctx.Database.ExecuteSqlRaw(
137 "ALTER TABLE Products ADD COLUMN SortOrder INTEGER NOT NULL DEFAULT 0");
138 _logger.LogInformation("Migration: Products.SortOrder 컬럼 추가");
139 }
140
141 if (!existingColumns.Contains("DetailHtml"))
142 {
143 ctx.Database.ExecuteSqlRaw(
144 "ALTER TABLE Products ADD COLUMN DetailHtml TEXT NOT NULL DEFAULT ''");
145 _logger.LogInformation("Migration: Products.DetailHtml 컬럼 추가");
146 }
147
148 if (!existingColumns.Contains("VideoUrl"))
149 {
150 ctx.Database.ExecuteSqlRaw(
151 "ALTER TABLE Products ADD COLUMN VideoUrl TEXT NOT NULL DEFAULT ''");
152 _logger.LogInformation("Migration: Products.VideoUrl 컬럼 추가");
153 }
154
155 if (!existingColumns.Contains("IsUnlimitedStock"))
156 {
157 ctx.Database.ExecuteSqlRaw(
158 "ALTER TABLE Products ADD COLUMN IsUnlimitedStock INTEGER NOT NULL DEFAULT 0");
159 _logger.LogInformation("Migration: Products.IsUnlimitedStock 컬럼 추가");
160 }
161
162 if (!existingColumns.Contains("DetailImagesJson"))
163 {
164 ctx.Database.ExecuteSqlRaw(
165 "ALTER TABLE Products ADD COLUMN DetailImagesJson TEXT NOT NULL DEFAULT '[]'");
166 _logger.LogInformation("Migration: Products.DetailImagesJson 컬럼 추가");
167 }
168 }

다음을 참조함 : _logger.

다음에 의해서 참조됨 : Create().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ Create()

TenantDbContext ShopPlatform.Data.TenantDbContextFactory.Create ( string slug)
inline

슬러그에 해당하는 DB 컨텍스트를 반환. DB 파일·스키마 없으면 자동 생성.

매개변수
slugslug에 사용할 string 값입니다.
반환값
Create 작업에서 생성한 TenantDbContext 결과입니다.

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

90 {
91 var dbPath = GetDbPath(slug);
92 Directory.CreateDirectory(Path.GetDirectoryName(dbPath)!);
93
94 var opts = new DbContextOptionsBuilder<TenantDbContext>()
95 .UseSqlite($"Data Source={dbPath}")
96 .Options;
97
98 var ctx = new TenantDbContext(opts);
99 ctx.Database.EnsureCreated();
100 ApplyColumnMigrations(ctx);
101 return ctx;
102 }

다음을 참조함 : ApplyColumnMigrations(), GetDbPath().

다음에 의해서 참조됨 : MapGet(), ShopPlatform.Data.ShopSeeder.SeedCodemaruAsync().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ GetDbPath()

string ShopPlatform.Data.TenantDbContextFactory.GetDbPath ( string slug)
inline

Db Path 값을 가져옵니다.

매개변수
slugslug에 사용할 string 값입니다.
반환값
Get Db Path 작업에서 생성한 string 결과입니다.

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

195 => Path.Combine(_opts.ResolvedDataPath, slug, "shop.db");

다음을 참조함 : _opts.

다음에 의해서 참조됨 : Create().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

멤버 데이터 문서화

◆ _logger

readonly ILogger<TenantDbContextFactory> ShopPlatform.Data.TenantDbContextFactory._logger
private

logger 값을 보관합니다.

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

다음에 의해서 참조됨 : ApplyColumnMigrations(), TenantDbContextFactory().

◆ _opts

readonly ShopOptions ShopPlatform.Data.TenantDbContextFactory._opts
private

opts 값을 보관합니다.

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

다음에 의해서 참조됨 : GetDbPath(), TenantDbContextFactory().


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