20250220162340_a1.Designer.cs 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146
  1. // <auto-generated />
  2. using System;
  3. using Microsoft.EntityFrameworkCore;
  4. using Microsoft.EntityFrameworkCore.Infrastructure;
  5. using Microsoft.EntityFrameworkCore.Metadata;
  6. using Microsoft.EntityFrameworkCore.Migrations;
  7. using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
  8. #nullable disable
  9. namespace bitforum.Migrations.DefaultDb
  10. {
  11. [DbContext(typeof(DefaultDbContext))]
  12. [Migration("20250220162340_a1")]
  13. partial class a1
  14. {
  15. /// <inheritdoc />
  16. protected override void BuildTargetModel(ModelBuilder modelBuilder)
  17. {
  18. #pragma warning disable 612, 618
  19. modelBuilder
  20. .HasAnnotation("ProductVersion", "8.0.13")
  21. .HasAnnotation("Relational:MaxIdentifierLength", 128);
  22. SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
  23. modelBuilder.Entity("bitforum.Models.Account.EmailVerifyNumber", b =>
  24. {
  25. b.Property<int>("ID")
  26. .ValueGeneratedOnAdd()
  27. .HasColumnType("int")
  28. .HasComment("PK");
  29. SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));
  30. b.Property<string>("Code")
  31. .IsRequired()
  32. .HasMaxLength(10)
  33. .HasColumnType("nvarchar(10)")
  34. .HasComment("Token");
  35. b.Property<DateTime>("CreatedAt")
  36. .HasColumnType("datetime2")
  37. .HasComment("등록 일시");
  38. b.Property<string>("Email")
  39. .IsRequired()
  40. .HasMaxLength(60)
  41. .HasColumnType("nvarchar(60)")
  42. .HasComment("이메일");
  43. b.Property<DateTime>("Expiration")
  44. .HasColumnType("datetime2")
  45. .HasComment("만료 일시");
  46. b.Property<bool>("IsVerified")
  47. .HasColumnType("bit")
  48. .HasComment("인증 여부");
  49. b.Property<int>("Type")
  50. .HasColumnType("int")
  51. .HasComment("인증 유형 (이메일 인증 / 비밀번호 재설정)");
  52. b.HasKey("ID");
  53. b.HasIndex(new[] { "Email" }, "IX_EmailVerifyNumber_Email");
  54. b.HasIndex(new[] { "Expiration" }, "IX_EmailVerifyNumber_Expiration");
  55. b.HasIndex(new[] { "IsVerified" }, "IX_EmailVerifyNumber_IsVerified");
  56. b.HasIndex(new[] { "Type" }, "IX_EmailVerifyNumber_Type");
  57. b.ToTable("EmailVerifyNumber", t =>
  58. {
  59. t.HasComment("이메일 인증 번호들");
  60. });
  61. });
  62. modelBuilder.Entity("bitforum.Models.Account.EmailVerifyToken", b =>
  63. {
  64. b.Property<int>("ID")
  65. .ValueGeneratedOnAdd()
  66. .HasColumnType("int")
  67. .HasComment("PK");
  68. SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));
  69. b.Property<string>("Additional")
  70. .HasColumnType("nvarchar(max)")
  71. .HasComment("추가 정보(JSON)");
  72. b.Property<DateTime>("CreatedAt")
  73. .HasColumnType("datetime2")
  74. .HasComment("등록 일시");
  75. b.Property<string>("Email")
  76. .IsRequired()
  77. .HasMaxLength(60)
  78. .HasColumnType("nvarchar(60)")
  79. .HasComment("이메일");
  80. b.Property<DateTime>("Expiration")
  81. .HasColumnType("datetime2")
  82. .HasComment("만료 일시");
  83. b.Property<bool>("IsVerified")
  84. .HasColumnType("bit")
  85. .HasComment("인증 여부");
  86. b.Property<string>("Token")
  87. .IsRequired()
  88. .HasMaxLength(256)
  89. .HasColumnType("nvarchar(256)")
  90. .HasComment("Token");
  91. b.Property<int>("Type")
  92. .HasColumnType("int")
  93. .HasComment("인증 유형 (이메일 인증 / 비밀번호 재설정)");
  94. b.HasKey("ID");
  95. b.HasIndex(new[] { "Email" }, "IX_EmailVerifyToken_Email");
  96. b.HasIndex(new[] { "Expiration" }, "IX_EmailVerifyToken_Expiration");
  97. b.HasIndex(new[] { "IsVerified" }, "IX_EmailVerifyToken_IsVerified");
  98. b.HasIndex(new[] { "Type" }, "IX_EmailVerifyToken_Type");
  99. b.ToTable("EmailVerifyToken", t =>
  100. {
  101. t.HasComment("이메일 인증 토큰들");
  102. });
  103. });
  104. modelBuilder.Entity("bitforum.Models.Account.Member", b =>
  105. {
  106. b.Property<int>("ID")
  107. .ValueGeneratedOnAdd()
  108. .HasColumnType("int")
  109. .HasComment("PK");
  110. SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));
  111. b.Property<DateTime?>("AuthCertifiedAt")
  112. .HasColumnType("datetime2")
  113. .HasComment("본인인증 일시");
  114. b.Property<DateOnly?>("Birthday")
  115. .HasColumnType("date")
  116. .HasComment("생년월일");
  117. b.Property<long>("Coin")
  118. .HasColumnType("bigint")
  119. .HasComment("코인");
  120. b.Property<DateTime>("CreatedAt")
  121. .HasColumnType("datetime2")
  122. .HasComment("가입 일시");
  123. b.Property<DateTime?>("DeletedAt")
  124. .HasColumnType("datetime2")
  125. .HasComment("탈퇴 일시");
  126. b.Property<string>("DeviceInfo")
  127. .HasMaxLength(400)
  128. .HasColumnType("nvarchar(400)")
  129. .HasComment("로그인 단말기 정보");
  130. b.Property<string>("Email")
  131. .IsRequired()
  132. .HasMaxLength(60)
  133. .HasColumnType("nvarchar(60)")
  134. .HasComment("이메일");
  135. b.Property<DateTime?>("EmailVerifiedAt")
  136. .HasColumnType("datetime2")
  137. .HasComment("이메일 인증 일시");
  138. b.Property<int>("Exp")
  139. .HasColumnType("int")
  140. .HasComment("경험치");
  141. b.Property<string>("FirstName")
  142. .HasMaxLength(20)
  143. .HasColumnType("nvarchar(20)")
  144. .HasComment("본명(성)");
  145. b.Property<int>("Followed")
  146. .HasColumnType("int")
  147. .HasComment("구독자");
  148. b.Property<int>("Following")
  149. .HasColumnType("int")
  150. .HasComment("구독 중");
  151. b.Property<string>("FullName")
  152. .HasMaxLength(40)
  153. .HasColumnType("nvarchar(40)")
  154. .HasComment("본명");
  155. b.Property<int?>("Gender")
  156. .HasColumnType("int")
  157. .HasComment("성별");
  158. b.Property<int?>("GradeID")
  159. .HasColumnType("int")
  160. .HasComment("회원등급 ID");
  161. b.Property<string>("Icon")
  162. .HasMaxLength(255)
  163. .HasColumnType("nvarchar(255)")
  164. .HasComment("아이콘");
  165. b.Property<string>("Intro")
  166. .HasMaxLength(1000)
  167. .HasColumnType("nvarchar(1000)")
  168. .HasComment("자기소개");
  169. b.Property<bool>("IsAdmin")
  170. .HasColumnType("bit")
  171. .HasComment("운영진 여부");
  172. b.Property<bool>("IsAuthCertified")
  173. .HasColumnType("bit")
  174. .HasComment("본인 인증 여부");
  175. b.Property<bool>("IsDenied")
  176. .HasColumnType("bit")
  177. .HasComment("차단 여부");
  178. b.Property<bool>("IsEmailVerified")
  179. .HasColumnType("bit")
  180. .HasComment("이메일 인증 여부");
  181. b.Property<bool>("IsWithdraw")
  182. .HasColumnType("bit")
  183. .HasComment("탈퇴 여부");
  184. b.Property<DateTime?>("LastEmailChangedAt")
  185. .HasColumnType("datetime2")
  186. .HasComment("마지막 이메일 변경 일시");
  187. b.Property<DateTime?>("LastLoginAt")
  188. .HasColumnType("datetime2")
  189. .HasComment("마지막 로그인 일시");
  190. b.Property<string>("LastLoginIp")
  191. .HasMaxLength(15)
  192. .HasColumnType("nvarchar(15)")
  193. .HasComment("마지막 로그인 IP");
  194. b.Property<string>("LastName")
  195. .HasMaxLength(40)
  196. .HasColumnType("nvarchar(40)")
  197. .HasComment("본명(이름)");
  198. b.Property<DateTime?>("LastNameChangedAt")
  199. .HasColumnType("datetime2")
  200. .HasComment("마지막 별명 변경 일시");
  201. b.Property<string>("Name")
  202. .HasMaxLength(20)
  203. .HasColumnType("nvarchar(20)")
  204. .HasComment("별명");
  205. b.Property<string>("Password")
  206. .HasMaxLength(255)
  207. .HasColumnType("nvarchar(255)")
  208. .HasComment("비밀번호");
  209. b.Property<DateTime>("PasswordUpdatedAt")
  210. .HasColumnType("datetime2")
  211. .HasComment("비밀번호 변경 일시");
  212. b.Property<string>("Phone")
  213. .HasMaxLength(15)
  214. .HasColumnType("nvarchar(15)")
  215. .HasComment("연락처");
  216. b.Property<string>("Photo")
  217. .HasMaxLength(255)
  218. .HasColumnType("nvarchar(255)")
  219. .HasComment("사진");
  220. b.Property<string>("SID")
  221. .IsRequired()
  222. .HasMaxLength(20)
  223. .HasColumnType("nvarchar(20)")
  224. .HasComment("SID");
  225. b.Property<string>("SignupIP")
  226. .IsRequired()
  227. .HasMaxLength(15)
  228. .HasColumnType("nvarchar(15)")
  229. .HasComment("회원가입 시 IP");
  230. b.Property<string>("Summary")
  231. .HasMaxLength(50)
  232. .HasColumnType("nvarchar(50)")
  233. .HasComment("한마디");
  234. b.Property<DateTime?>("UpdatedAt")
  235. .HasColumnType("datetime2")
  236. .HasComment("수정 일시");
  237. b.HasKey("ID");
  238. b.HasIndex("GradeID");
  239. b.HasIndex(new[] { "Email" }, "IX_Member_Email")
  240. .IsUnique();
  241. b.HasIndex(new[] { "FullName" }, "IX_Member_FullName");
  242. b.HasIndex(new[] { "IsAdmin" }, "IX_Member_IsAdmin");
  243. b.HasIndex(new[] { "IsAuthCertified" }, "IX_Member_IsAuthCertified");
  244. b.HasIndex(new[] { "IsDenied" }, "IX_Member_IsDenied");
  245. b.HasIndex(new[] { "IsEmailVerified" }, "IX_Member_IsEmailVerified");
  246. b.HasIndex(new[] { "IsWithdraw" }, "IX_Member_IsWithdraw");
  247. b.HasIndex(new[] { "Name" }, "IX_Member_Name")
  248. .IsUnique()
  249. .HasFilter("[Name] IS NOT NULL");
  250. b.HasIndex(new[] { "Phone" }, "IX_Member_Phone");
  251. b.HasIndex(new[] { "SID" }, "IX_Member_SID")
  252. .IsUnique();
  253. b.ToTable("Member", t =>
  254. {
  255. t.HasComment("회원 정보");
  256. });
  257. });
  258. modelBuilder.Entity("bitforum.Models.Account.MemberApprove", b =>
  259. {
  260. b.Property<int>("MemberID")
  261. .HasColumnType("int")
  262. .HasComment("회원 ID");
  263. b.Property<bool>("IsDisclosureInvest")
  264. .HasColumnType("bit")
  265. .HasComment("투자 현황 공개 여부");
  266. b.Property<bool>("IsReceiveEmail")
  267. .HasColumnType("bit")
  268. .HasComment("E-MAIL 수신 여부");
  269. b.Property<bool>("IsReceiveNote")
  270. .HasColumnType("bit")
  271. .HasComment("쪽지 수신 여부");
  272. b.Property<bool>("IsReceiveSMS")
  273. .HasColumnType("bit")
  274. .HasComment("SMS 수신 여부");
  275. b.HasKey("MemberID");
  276. b.ToTable("MemberApprove", t =>
  277. {
  278. t.HasComment("회원 동의 및 수신 여부");
  279. });
  280. });
  281. modelBuilder.Entity("bitforum.Models.Account.MemberGrade", b =>
  282. {
  283. b.Property<int>("ID")
  284. .ValueGeneratedOnAdd()
  285. .HasColumnType("int")
  286. .HasComment("PK");
  287. SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));
  288. b.Property<DateTime>("CreatedAt")
  289. .HasColumnType("datetime2")
  290. .HasComment("등록 일시");
  291. b.Property<string>("Description")
  292. .HasMaxLength(1000)
  293. .HasColumnType("nvarchar(1000)")
  294. .HasComment("설명");
  295. b.Property<string>("EngName")
  296. .IsRequired()
  297. .HasMaxLength(120)
  298. .HasColumnType("nvarchar(120)")
  299. .HasComment("영문 명");
  300. b.Property<string>("Image")
  301. .HasColumnType("nvarchar(max)")
  302. .HasComment("이미지");
  303. b.Property<bool>("IsActive")
  304. .HasColumnType("bit")
  305. .HasComment("사용 여부");
  306. b.Property<string>("KorName")
  307. .IsRequired()
  308. .HasMaxLength(120)
  309. .HasColumnType("nvarchar(120)")
  310. .HasComment("한글 명");
  311. b.Property<short>("Order")
  312. .HasColumnType("smallint")
  313. .HasComment("순서");
  314. b.Property<int>("RequiredCoin")
  315. .HasColumnType("int")
  316. .HasComment("최소 코인(Coin)");
  317. b.Property<int>("RequiredExp")
  318. .HasColumnType("int")
  319. .HasComment("최소 경험치(Exp)");
  320. b.Property<DateTime?>("UpdatedAt")
  321. .HasColumnType("datetime2")
  322. .HasComment("수정 일시");
  323. b.HasKey("ID");
  324. b.HasIndex(new[] { "EngName" }, "IX_MemberGrade_EngName")
  325. .IsUnique();
  326. b.HasIndex(new[] { "KorName" }, "IX_MemberGrade_KorName")
  327. .IsUnique();
  328. b.ToTable("MemberGrade", t =>
  329. {
  330. t.HasComment("회원 등급");
  331. });
  332. });
  333. modelBuilder.Entity("bitforum.Models.Account.RefreshToken", b =>
  334. {
  335. b.Property<int>("ID")
  336. .ValueGeneratedOnAdd()
  337. .HasColumnType("int")
  338. .HasComment("PK");
  339. SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));
  340. b.Property<DateTime>("CreatedAt")
  341. .HasColumnType("datetime2")
  342. .HasComment("등록 일시");
  343. b.Property<DateTime>("Expiration")
  344. .HasColumnType("datetime2")
  345. .HasComment("만료 일시");
  346. b.Property<int>("MemberID")
  347. .HasColumnType("int")
  348. .HasComment("회원 ID");
  349. b.Property<string>("Token")
  350. .IsRequired()
  351. .HasMaxLength(128)
  352. .HasColumnType("nvarchar(128)")
  353. .HasComment("Token");
  354. b.HasKey("ID");
  355. b.ToTable("RefreshToken");
  356. });
  357. modelBuilder.Entity("bitforum.Models.Config", b =>
  358. {
  359. b.Property<int>("ID")
  360. .ValueGeneratedOnAdd()
  361. .HasColumnType("int");
  362. SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));
  363. b.Property<DateTime>("CreatedAt")
  364. .HasColumnType("datetime2");
  365. b.Property<string>("Description")
  366. .HasColumnType("nvarchar(max)");
  367. b.Property<string>("Key")
  368. .IsRequired()
  369. .HasColumnType("nvarchar(450)");
  370. b.Property<string>("Value")
  371. .HasColumnType("nvarchar(max)");
  372. b.HasKey("ID");
  373. b.HasIndex("Key")
  374. .IsUnique();
  375. b.ToTable("Config");
  376. });
  377. modelBuilder.Entity("bitforum.Models.Log.EmailChangeLog", b =>
  378. {
  379. b.Property<int>("ID")
  380. .ValueGeneratedOnAdd()
  381. .HasColumnType("int")
  382. .HasComment("PK");
  383. SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));
  384. b.Property<string>("AfterEmail")
  385. .IsRequired()
  386. .HasMaxLength(40)
  387. .HasColumnType("nvarchar(40)")
  388. .HasComment("바꾼 이메일");
  389. b.Property<string>("BeforeEmail")
  390. .HasMaxLength(40)
  391. .HasColumnType("nvarchar(40)")
  392. .HasComment("이전 이메일");
  393. b.Property<DateTime>("CreatedAt")
  394. .HasColumnType("datetime2")
  395. .HasComment("등록 일시");
  396. b.Property<int>("MemberID")
  397. .HasColumnType("int")
  398. .HasComment("회원 ID");
  399. b.HasKey("ID");
  400. b.HasIndex(new[] { "MemberID" }, "IX_EmailChangeLog_MemberID");
  401. b.ToTable("EmailChangeLog", t =>
  402. {
  403. t.HasComment("이메일 변경 내역");
  404. });
  405. });
  406. modelBuilder.Entity("bitforum.Models.Log.EmailLog", b =>
  407. {
  408. b.Property<int>("ID")
  409. .ValueGeneratedOnAdd()
  410. .HasColumnType("int")
  411. .HasComment("PK");
  412. SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));
  413. b.Property<DateTime>("CreatedAt")
  414. .HasColumnType("datetime2")
  415. .HasComment("등록 일시");
  416. b.Property<string>("FromAddress")
  417. .IsRequired()
  418. .HasMaxLength(120)
  419. .HasColumnType("nvarchar(120)")
  420. .HasComment("발신 주소");
  421. b.Property<string>("FromName")
  422. .HasMaxLength(60)
  423. .HasColumnType("nvarchar(60)")
  424. .HasComment("발신자");
  425. b.Property<int?>("MemberID")
  426. .HasColumnType("int")
  427. .HasComment("회원 ID");
  428. b.Property<string>("Message")
  429. .HasColumnType("nvarchar(max)")
  430. .HasComment("내용");
  431. b.Property<DateTime?>("ProcessedAt")
  432. .HasColumnType("datetime2")
  433. .HasComment("처리 일시");
  434. b.Property<string>("Status")
  435. .IsRequired()
  436. .HasColumnType("nvarchar(20)")
  437. .HasComment("처리 여부");
  438. b.Property<string>("Subject")
  439. .IsRequired()
  440. .HasMaxLength(255)
  441. .HasColumnType("nvarchar(255)")
  442. .HasComment("제목");
  443. b.Property<string>("ToAddress")
  444. .IsRequired()
  445. .HasMaxLength(120)
  446. .HasColumnType("nvarchar(120)")
  447. .HasComment("수신 주소");
  448. b.Property<string>("ToName")
  449. .HasMaxLength(60)
  450. .HasColumnType("nvarchar(60)")
  451. .HasComment("수신자");
  452. b.HasKey("ID");
  453. b.HasIndex(new[] { "MemberID" }, "IX_EmailLog_MemberID");
  454. b.HasIndex(new[] { "Status" }, "IX_EmailLog_Status");
  455. b.ToTable("EmailLog");
  456. });
  457. modelBuilder.Entity("bitforum.Models.Log.LoginLog", b =>
  458. {
  459. b.Property<int>("ID")
  460. .ValueGeneratedOnAdd()
  461. .HasColumnType("int")
  462. .HasComment("PK");
  463. SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));
  464. b.Property<string>("Account")
  465. .IsRequired()
  466. .HasMaxLength(120)
  467. .HasColumnType("nvarchar(120)")
  468. .HasComment("로그인 시도한 계정");
  469. b.Property<DateTime>("CreatedAt")
  470. .HasColumnType("datetime2")
  471. .HasComment("등록 일시");
  472. b.Property<string>("IpAddress")
  473. .HasMaxLength(15)
  474. .HasColumnType("nvarchar(15)")
  475. .HasComment("IP Address");
  476. b.Property<int?>("MemberID")
  477. .HasColumnType("int")
  478. .HasComment("회원 ID");
  479. b.Property<string>("Reason")
  480. .HasMaxLength(255)
  481. .HasColumnType("nvarchar(255)")
  482. .HasComment("실패 이유");
  483. b.Property<string>("Referer")
  484. .HasColumnType("nvarchar(max)")
  485. .HasComment("이전 페이지 주소");
  486. b.Property<bool>("Success")
  487. .HasColumnType("bit")
  488. .HasComment("로그인 성공 여부 (0: 실패, 1: 성공)");
  489. b.Property<string>("Url")
  490. .HasMaxLength(500)
  491. .HasColumnType("nvarchar(500)")
  492. .HasComment("요청 주소");
  493. b.Property<string>("UserAgent")
  494. .HasMaxLength(512)
  495. .HasColumnType("nvarchar(512)")
  496. .HasComment("User Agent");
  497. b.HasKey("ID");
  498. b.HasIndex("MemberID");
  499. b.ToTable("LoginLog", t =>
  500. {
  501. t.HasComment("로그인 기록");
  502. });
  503. });
  504. modelBuilder.Entity("bitforum.Models.Log.NameChangeLog", b =>
  505. {
  506. b.Property<int>("ID")
  507. .ValueGeneratedOnAdd()
  508. .HasColumnType("int")
  509. .HasComment("PK");
  510. SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));
  511. b.Property<string>("AfterName")
  512. .IsRequired()
  513. .HasMaxLength(40)
  514. .HasColumnType("nvarchar(40)")
  515. .HasComment("바꾼 별명");
  516. b.Property<string>("BeforeName")
  517. .HasMaxLength(40)
  518. .HasColumnType("nvarchar(40)")
  519. .HasComment("이전 별명");
  520. b.Property<DateTime>("CreatedAt")
  521. .HasColumnType("datetime2")
  522. .HasComment("등록 일시");
  523. b.Property<int>("MemberID")
  524. .HasColumnType("int")
  525. .HasComment("회원 ID");
  526. b.HasKey("ID");
  527. b.HasIndex(new[] { "MemberID" }, "IX_NameChangeLog_MemberID");
  528. b.ToTable("NameChangeLog", t =>
  529. {
  530. t.HasComment("별명 변경 내역");
  531. });
  532. });
  533. modelBuilder.Entity("bitforum.Models.Page.Banner.BannerItem", b =>
  534. {
  535. b.Property<int>("ID")
  536. .ValueGeneratedOnAdd()
  537. .HasColumnType("int")
  538. .HasComment("PK");
  539. SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));
  540. b.Property<DateTime>("CreatedAt")
  541. .HasColumnType("datetime2")
  542. .HasComment("등록 일시");
  543. b.Property<DateTime?>("EndAt")
  544. .HasColumnType("datetime2")
  545. .HasComment("사용 기간 - 종료");
  546. b.Property<int?>("Height")
  547. .HasColumnType("int")
  548. .HasComment("세로 크기");
  549. b.Property<string>("Image")
  550. .HasMaxLength(1024)
  551. .HasColumnType("nvarchar(1024)")
  552. .HasComment("이미지");
  553. b.Property<bool>("IsActive")
  554. .HasColumnType("bit")
  555. .HasComment("사용 여부");
  556. b.Property<string>("Link")
  557. .HasMaxLength(255)
  558. .HasColumnType("nvarchar(255)")
  559. .HasComment("주소");
  560. b.Property<int>("Order")
  561. .HasColumnType("int")
  562. .HasComment("순서");
  563. b.Property<int>("PositionID")
  564. .HasColumnType("int")
  565. .HasComment("배너 위치 ID");
  566. b.Property<DateTime?>("StartAt")
  567. .HasColumnType("datetime2")
  568. .HasComment("사용 기간 - 시작");
  569. b.Property<string>("Subject")
  570. .IsRequired()
  571. .HasMaxLength(255)
  572. .HasColumnType("nvarchar(255)")
  573. .HasComment("배너 명");
  574. b.Property<DateTime?>("UpdatedAt")
  575. .HasColumnType("datetime2")
  576. .HasComment("수정 일시");
  577. b.Property<int>("Views")
  578. .HasColumnType("int")
  579. .HasComment("조회 수");
  580. b.Property<int?>("Width")
  581. .HasColumnType("int")
  582. .HasComment("가로 크기");
  583. b.HasKey("ID");
  584. b.HasIndex("PositionID");
  585. b.HasIndex(new[] { "IsActive" }, "IX_BannerItem_IsActive");
  586. b.HasIndex(new[] { "Order" }, "IX_BannerItem_Order");
  587. b.ToTable("BannerItem");
  588. });
  589. modelBuilder.Entity("bitforum.Models.Page.Banner.BannerPosition", b =>
  590. {
  591. b.Property<int>("ID")
  592. .ValueGeneratedOnAdd()
  593. .HasColumnType("int")
  594. .HasComment("PK");
  595. SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));
  596. b.Property<string>("Code")
  597. .IsRequired()
  598. .HasMaxLength(30)
  599. .HasColumnType("nvarchar(30)")
  600. .HasComment("위치 구분");
  601. b.Property<DateTime>("CreatedAt")
  602. .HasColumnType("datetime2")
  603. .HasComment("등록 일시");
  604. b.Property<bool>("IsActive")
  605. .HasColumnType("bit")
  606. .HasComment("사용 여부");
  607. b.Property<string>("Subject")
  608. .IsRequired()
  609. .HasMaxLength(255)
  610. .HasColumnType("nvarchar(255)")
  611. .HasComment("위치 명");
  612. b.Property<DateTime?>("UpdatedAt")
  613. .HasColumnType("datetime2")
  614. .HasComment("수정 일시");
  615. b.HasKey("ID");
  616. b.HasIndex(new[] { "Code" }, "IX_BannerPosition_Code")
  617. .IsUnique();
  618. b.HasIndex(new[] { "IsActive" }, "IX_BannerPosition_IsActive");
  619. b.ToTable("BannerPosition");
  620. });
  621. modelBuilder.Entity("bitforum.Models.Page.Document", b =>
  622. {
  623. b.Property<int>("ID")
  624. .ValueGeneratedOnAdd()
  625. .HasColumnType("int")
  626. .HasComment("PK");
  627. SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));
  628. b.Property<string>("Code")
  629. .IsRequired()
  630. .HasMaxLength(30)
  631. .HasColumnType("nvarchar(30)")
  632. .HasComment("주소");
  633. b.Property<string>("Content")
  634. .HasColumnType("nvarchar(max)")
  635. .HasComment("내용");
  636. b.Property<DateTime>("CreatedAt")
  637. .HasColumnType("datetime2")
  638. .HasComment("등록 일시");
  639. b.Property<bool>("IsActive")
  640. .HasColumnType("bit")
  641. .HasComment("사용 여부");
  642. b.Property<string>("Subject")
  643. .IsRequired()
  644. .HasMaxLength(120)
  645. .HasColumnType("nvarchar(120)")
  646. .HasComment("제목");
  647. b.Property<DateTime?>("UpdatedAt")
  648. .HasColumnType("datetime2")
  649. .HasComment("수정 일시");
  650. b.Property<int>("Views")
  651. .HasColumnType("int")
  652. .HasComment("조회 수");
  653. b.HasKey("ID");
  654. b.HasIndex(new[] { "Code" }, "IX_Document_Code")
  655. .IsUnique();
  656. b.HasIndex(new[] { "IsActive" }, "IX_Document_IsActive");
  657. b.ToTable("Document");
  658. });
  659. modelBuilder.Entity("bitforum.Models.Page.Faq.FaqCategory", b =>
  660. {
  661. b.Property<int>("ID")
  662. .ValueGeneratedOnAdd()
  663. .HasColumnType("int")
  664. .HasComment("PK");
  665. SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));
  666. b.Property<string>("Code")
  667. .IsRequired()
  668. .HasMaxLength(30)
  669. .HasColumnType("nvarchar(30)")
  670. .HasComment("주소");
  671. b.Property<DateTime>("CreatedAt")
  672. .HasColumnType("datetime2")
  673. .HasComment("등록 일시");
  674. b.Property<bool>("IsActive")
  675. .HasColumnType("bit")
  676. .HasComment("사용 여부");
  677. b.Property<int>("Order")
  678. .HasColumnType("int")
  679. .HasComment("순서");
  680. b.Property<string>("Subject")
  681. .IsRequired()
  682. .HasMaxLength(255)
  683. .HasColumnType("nvarchar(255)")
  684. .HasComment("분류 명");
  685. b.Property<DateTime?>("UpdatedAt")
  686. .HasColumnType("datetime2")
  687. .HasComment("수정 일시");
  688. b.HasKey("ID");
  689. b.HasIndex(new[] { "Code" }, "IX_FaqCategory_Code")
  690. .IsUnique();
  691. b.HasIndex(new[] { "Order" }, "IX_FaqCategory_Order");
  692. b.ToTable("FaqCategory");
  693. });
  694. modelBuilder.Entity("bitforum.Models.Page.Faq.FaqItem", b =>
  695. {
  696. b.Property<int>("ID")
  697. .ValueGeneratedOnAdd()
  698. .HasColumnType("int")
  699. .HasComment("PK");
  700. SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));
  701. b.Property<string>("Answer")
  702. .HasColumnType("nvarchar(max)")
  703. .HasComment("답변");
  704. b.Property<int>("CategoryID")
  705. .HasColumnType("int")
  706. .HasComment("분류 ID");
  707. b.Property<DateTime>("CreatedAt")
  708. .HasColumnType("datetime2")
  709. .HasComment("등록 일시");
  710. b.Property<bool>("IsActive")
  711. .HasColumnType("bit")
  712. .HasComment("사용 여부");
  713. b.Property<int>("Order")
  714. .HasColumnType("int")
  715. .HasComment("순서");
  716. b.Property<string>("Question")
  717. .IsRequired()
  718. .HasMaxLength(255)
  719. .HasColumnType("nvarchar(255)")
  720. .HasComment("질문");
  721. b.Property<DateTime?>("UpdatedAt")
  722. .HasColumnType("datetime2")
  723. .HasComment("수정 일시");
  724. b.Property<int>("Views")
  725. .HasColumnType("int")
  726. .HasComment("조회 수");
  727. b.HasKey("ID");
  728. b.HasIndex("CategoryID");
  729. b.HasIndex(new[] { "IsActive" }, "IX_FaqItem_IsActive");
  730. b.HasIndex(new[] { "Order" }, "IX_FaqItem_Order");
  731. b.ToTable("FaqItem");
  732. });
  733. modelBuilder.Entity("bitforum.Models.Page.Popup", b =>
  734. {
  735. b.Property<int>("ID")
  736. .ValueGeneratedOnAdd()
  737. .HasColumnType("int")
  738. .HasComment("PK");
  739. SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));
  740. b.Property<string>("Content")
  741. .HasColumnType("nvarchar(max)")
  742. .HasComment("내용");
  743. b.Property<DateTime>("CreatedAt")
  744. .HasColumnType("datetime2")
  745. .HasComment("등록 일시");
  746. b.Property<DateTime?>("EndAt")
  747. .HasColumnType("datetime2")
  748. .HasComment("사용 기간 - 종료");
  749. b.Property<bool>("IsActive")
  750. .HasColumnType("bit")
  751. .HasComment("사용 여부");
  752. b.Property<string>("Link")
  753. .HasMaxLength(255)
  754. .HasColumnType("nvarchar(255)")
  755. .HasComment("주소");
  756. b.Property<short>("Order")
  757. .HasColumnType("smallint")
  758. .HasComment("순서");
  759. b.Property<DateTime?>("StartAt")
  760. .HasColumnType("datetime2")
  761. .HasComment("사용 기간 - 시작");
  762. b.Property<string>("Subject")
  763. .IsRequired()
  764. .HasMaxLength(255)
  765. .HasColumnType("nvarchar(255)")
  766. .HasComment("제목");
  767. b.Property<DateTime?>("UpdatedAt")
  768. .HasColumnType("datetime2")
  769. .HasComment("수정 일시");
  770. b.Property<int>("Views")
  771. .HasColumnType("int")
  772. .HasComment("조회 수");
  773. b.HasKey("ID");
  774. b.HasIndex(new[] { "IsActive" }, "IX_Popup_IsActive");
  775. b.HasIndex(new[] { "Order" }, "IX_Popup_Order");
  776. b.ToTable("Popup");
  777. });
  778. modelBuilder.Entity("bitforum.Models.Account.Member", b =>
  779. {
  780. b.HasOne("bitforum.Models.Account.MemberGrade", "MemberGrade")
  781. .WithMany()
  782. .HasForeignKey("GradeID");
  783. b.Navigation("MemberGrade");
  784. });
  785. modelBuilder.Entity("bitforum.Models.Account.MemberApprove", b =>
  786. {
  787. b.HasOne("bitforum.Models.Account.Member", "Member")
  788. .WithOne("MemberApprove")
  789. .HasForeignKey("bitforum.Models.Account.MemberApprove", "MemberID")
  790. .OnDelete(DeleteBehavior.NoAction)
  791. .IsRequired();
  792. b.Navigation("Member");
  793. });
  794. modelBuilder.Entity("bitforum.Models.Log.EmailChangeLog", b =>
  795. {
  796. b.HasOne("bitforum.Models.Account.Member", "Member")
  797. .WithMany("EmailChangeLog")
  798. .HasForeignKey("MemberID")
  799. .OnDelete(DeleteBehavior.NoAction)
  800. .IsRequired();
  801. b.Navigation("Member");
  802. });
  803. modelBuilder.Entity("bitforum.Models.Log.EmailLog", b =>
  804. {
  805. b.HasOne("bitforum.Models.Account.Member", "Member")
  806. .WithMany("EmailLog")
  807. .HasForeignKey("MemberID")
  808. .OnDelete(DeleteBehavior.SetNull);
  809. b.Navigation("Member");
  810. });
  811. modelBuilder.Entity("bitforum.Models.Log.LoginLog", b =>
  812. {
  813. b.HasOne("bitforum.Models.Account.Member", "Member")
  814. .WithMany("LoginLog")
  815. .HasForeignKey("MemberID")
  816. .OnDelete(DeleteBehavior.SetNull);
  817. b.Navigation("Member");
  818. });
  819. modelBuilder.Entity("bitforum.Models.Log.NameChangeLog", b =>
  820. {
  821. b.HasOne("bitforum.Models.Account.Member", "Member")
  822. .WithMany("NameChangeLog")
  823. .HasForeignKey("MemberID")
  824. .OnDelete(DeleteBehavior.NoAction)
  825. .IsRequired();
  826. b.Navigation("Member");
  827. });
  828. modelBuilder.Entity("bitforum.Models.Page.Banner.BannerItem", b =>
  829. {
  830. b.HasOne("bitforum.Models.Page.Banner.BannerPosition", "BannerPosition")
  831. .WithMany("BannerItem")
  832. .HasForeignKey("PositionID")
  833. .OnDelete(DeleteBehavior.Cascade)
  834. .IsRequired();
  835. b.Navigation("BannerPosition");
  836. });
  837. modelBuilder.Entity("bitforum.Models.Page.Faq.FaqItem", b =>
  838. {
  839. b.HasOne("bitforum.Models.Page.Faq.FaqCategory", "FaqCategory")
  840. .WithMany("FaqItem")
  841. .HasForeignKey("CategoryID")
  842. .OnDelete(DeleteBehavior.Cascade)
  843. .IsRequired();
  844. b.Navigation("FaqCategory");
  845. });
  846. modelBuilder.Entity("bitforum.Models.Account.Member", b =>
  847. {
  848. b.Navigation("EmailChangeLog");
  849. b.Navigation("EmailLog");
  850. b.Navigation("LoginLog");
  851. b.Navigation("MemberApprove");
  852. b.Navigation("NameChangeLog");
  853. });
  854. modelBuilder.Entity("bitforum.Models.Page.Banner.BannerPosition", b =>
  855. {
  856. b.Navigation("BannerItem");
  857. });
  858. modelBuilder.Entity("bitforum.Models.Page.Faq.FaqCategory", b =>
  859. {
  860. b.Navigation("FaqItem");
  861. });
  862. #pragma warning restore 612, 618
  863. }
  864. }
  865. }