20250222130451_a2.Designer.cs 43 KB

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