// <auto-generated />
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;

#nullable disable

namespace bitforum.Migrations.DefaultDb
{
    [DbContext(typeof(DefaultDbContext))]
    [Migration("20250222152029_a5")]
    partial class a5
    {
        /// <inheritdoc />
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
                .HasAnnotation("ProductVersion", "8.0.13")
                .HasAnnotation("Relational:MaxIdentifierLength", 128);

            SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);

            modelBuilder.Entity("bitforum.Models.Account.EmailVerifyNumber", b =>
                {
                    b.Property<int>("ID")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasComment("PK");

                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));

                    b.Property<string>("Code")
                        .IsRequired()
                        .HasMaxLength(10)
                        .HasColumnType("nvarchar(10)")
                        .HasComment("Code");

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("datetime2")
                        .HasComment("등록 일시");

                    b.Property<string>("Email")
                        .IsRequired()
                        .HasMaxLength(60)
                        .HasColumnType("nvarchar(60)")
                        .HasComment("이메일");

                    b.Property<DateTime>("Expiration")
                        .HasColumnType("datetime2")
                        .HasComment("만료 일시");

                    b.Property<bool>("IsVerified")
                        .HasColumnType("bit")
                        .HasComment("인증 여부");

                    b.Property<int>("Type")
                        .HasColumnType("int")
                        .HasComment("인증 유형 (이메일 인증 / 비밀번호 재설정)");

                    b.HasKey("ID");

                    b.HasIndex(new[] { "Code" }, "IX_EmailVerifyNumber_Code");

                    b.HasIndex(new[] { "Email" }, "IX_EmailVerifyNumber_Email");

                    b.HasIndex(new[] { "Expiration" }, "IX_EmailVerifyNumber_Expiration");

                    b.HasIndex(new[] { "IsVerified" }, "IX_EmailVerifyNumber_IsVerified");

                    b.HasIndex(new[] { "Type" }, "IX_EmailVerifyNumber_Type");

                    b.ToTable("EmailVerifyNumber", t =>
                        {
                            t.HasComment("이메일 인증 번호들");
                        });
                });

            modelBuilder.Entity("bitforum.Models.Account.EmailVerifyToken", b =>
                {
                    b.Property<int>("ID")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasComment("PK");

                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));

                    b.Property<string>("Additional")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("추가 정보(JSON)");

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("datetime2")
                        .HasComment("등록 일시");

                    b.Property<string>("Email")
                        .IsRequired()
                        .HasMaxLength(60)
                        .HasColumnType("nvarchar(60)")
                        .HasComment("이메일");

                    b.Property<DateTime>("Expiration")
                        .HasColumnType("datetime2")
                        .HasComment("만료 일시");

                    b.Property<bool>("IsVerified")
                        .HasColumnType("bit")
                        .HasComment("인증 여부");

                    b.Property<string>("Token")
                        .IsRequired()
                        .HasMaxLength(256)
                        .HasColumnType("nvarchar(256)")
                        .HasComment("Token");

                    b.Property<int>("Type")
                        .HasColumnType("int")
                        .HasComment("인증 유형 (이메일 인증 / 비밀번호 재설정)");

                    b.HasKey("ID");

                    b.HasIndex(new[] { "Email" }, "IX_EmailVerifyToken_Email");

                    b.HasIndex(new[] { "Expiration" }, "IX_EmailVerifyToken_Expiration");

                    b.HasIndex(new[] { "IsVerified" }, "IX_EmailVerifyToken_IsVerified");

                    b.HasIndex(new[] { "Token" }, "IX_EmailVerifyToken_Token");

                    b.HasIndex(new[] { "Type" }, "IX_EmailVerifyToken_Type");

                    b.ToTable("EmailVerifyToken", t =>
                        {
                            t.HasComment("이메일 인증 토큰들");
                        });
                });

            modelBuilder.Entity("bitforum.Models.Account.Member", b =>
                {
                    b.Property<int>("ID")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasComment("PK");

                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));

                    b.Property<DateTime?>("AuthCertifiedAt")
                        .HasColumnType("datetime2")
                        .HasComment("본인인증 일시");

                    b.Property<DateOnly?>("Birthday")
                        .HasColumnType("date")
                        .HasComment("생년월일");

                    b.Property<long>("Coin")
                        .HasColumnType("bigint")
                        .HasComment("코인");

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("datetime2")
                        .HasComment("가입 일시");

                    b.Property<DateTime?>("DeletedAt")
                        .HasColumnType("datetime2")
                        .HasComment("탈퇴 일시");

                    b.Property<string>("DeviceInfo")
                        .HasMaxLength(400)
                        .HasColumnType("nvarchar(400)")
                        .HasComment("로그인 단말기 정보");

                    b.Property<string>("Email")
                        .IsRequired()
                        .HasMaxLength(60)
                        .HasColumnType("nvarchar(60)")
                        .HasComment("이메일");

                    b.Property<DateTime?>("EmailVerifiedAt")
                        .HasColumnType("datetime2")
                        .HasComment("이메일 인증 일시");

                    b.Property<int>("Exp")
                        .HasColumnType("int")
                        .HasComment("경험치");

                    b.Property<string>("FirstName")
                        .HasMaxLength(20)
                        .HasColumnType("nvarchar(20)")
                        .HasComment("본명(성)");

                    b.Property<int>("Followed")
                        .HasColumnType("int")
                        .HasComment("구독자");

                    b.Property<int>("Following")
                        .HasColumnType("int")
                        .HasComment("구독 중");

                    b.Property<string>("FullName")
                        .HasMaxLength(40)
                        .HasColumnType("nvarchar(40)")
                        .HasComment("본명");

                    b.Property<int?>("Gender")
                        .HasColumnType("int")
                        .HasComment("성별");

                    b.Property<int?>("GradeID")
                        .HasColumnType("int")
                        .HasComment("회원등급 ID");

                    b.Property<string>("Icon")
                        .HasMaxLength(255)
                        .HasColumnType("nvarchar(255)")
                        .HasComment("아이콘");

                    b.Property<string>("Intro")
                        .HasMaxLength(1000)
                        .HasColumnType("nvarchar(1000)")
                        .HasComment("자기소개");

                    b.Property<bool>("IsAdmin")
                        .HasColumnType("bit")
                        .HasComment("운영진 여부");

                    b.Property<bool>("IsAuthCertified")
                        .HasColumnType("bit")
                        .HasComment("본인 인증 여부");

                    b.Property<bool>("IsDenied")
                        .HasColumnType("bit")
                        .HasComment("차단 여부");

                    b.Property<bool>("IsEmailVerified")
                        .HasColumnType("bit")
                        .HasComment("이메일 인증 여부");

                    b.Property<bool>("IsWithdraw")
                        .HasColumnType("bit")
                        .HasComment("탈퇴 여부");

                    b.Property<DateTime?>("LastEmailChangedAt")
                        .HasColumnType("datetime2")
                        .HasComment("마지막 이메일 변경 일시");

                    b.Property<DateTime?>("LastLoginAt")
                        .HasColumnType("datetime2")
                        .HasComment("마지막 로그인 일시");

                    b.Property<string>("LastLoginIp")
                        .HasMaxLength(15)
                        .HasColumnType("nvarchar(15)")
                        .HasComment("마지막 로그인 IP");

                    b.Property<string>("LastName")
                        .HasMaxLength(40)
                        .HasColumnType("nvarchar(40)")
                        .HasComment("본명(이름)");

                    b.Property<DateTime?>("LastNameChangedAt")
                        .HasColumnType("datetime2")
                        .HasComment("마지막 별명 변경 일시");

                    b.Property<string>("Name")
                        .HasMaxLength(20)
                        .HasColumnType("nvarchar(20)")
                        .HasComment("별명");

                    b.Property<string>("Password")
                        .HasMaxLength(255)
                        .HasColumnType("nvarchar(255)")
                        .HasComment("비밀번호");

                    b.Property<DateTime>("PasswordUpdatedAt")
                        .HasColumnType("datetime2")
                        .HasComment("비밀번호 변경 일시");

                    b.Property<string>("Phone")
                        .HasMaxLength(15)
                        .HasColumnType("nvarchar(15)")
                        .HasComment("연락처");

                    b.Property<string>("Photo")
                        .HasMaxLength(255)
                        .HasColumnType("nvarchar(255)")
                        .HasComment("사진");

                    b.Property<string>("SID")
                        .IsRequired()
                        .HasMaxLength(20)
                        .HasColumnType("nvarchar(20)")
                        .HasComment("SID");

                    b.Property<string>("SignupIP")
                        .IsRequired()
                        .HasMaxLength(15)
                        .HasColumnType("nvarchar(15)")
                        .HasComment("회원가입 시 IP");

                    b.Property<string>("Summary")
                        .HasMaxLength(50)
                        .HasColumnType("nvarchar(50)")
                        .HasComment("한마디");

                    b.Property<DateTime?>("UpdatedAt")
                        .HasColumnType("datetime2")
                        .HasComment("수정 일시");

                    b.HasKey("ID");

                    b.HasIndex("GradeID");

                    b.HasIndex(new[] { "CreatedAt" }, "IX_Member_CreatedAt");

                    b.HasIndex(new[] { "DeletedAt" }, "IX_Member_DeletedAt");

                    b.HasIndex(new[] { "Email" }, "IX_Member_Email")
                        .IsUnique();

                    b.HasIndex(new[] { "FullName" }, "IX_Member_FullName");

                    b.HasIndex(new[] { "Gender" }, "IX_Member_Gender");

                    b.HasIndex(new[] { "IsAdmin" }, "IX_Member_IsAdmin");

                    b.HasIndex(new[] { "IsAuthCertified" }, "IX_Member_IsAuthCertified");

                    b.HasIndex(new[] { "IsDenied" }, "IX_Member_IsDenied");

                    b.HasIndex(new[] { "IsEmailVerified" }, "IX_Member_IsEmailVerified");

                    b.HasIndex(new[] { "IsWithdraw" }, "IX_Member_IsWithdraw");

                    b.HasIndex(new[] { "Name" }, "IX_Member_Name")
                        .IsUnique()
                        .HasFilter("[Name] IS NOT NULL");

                    b.HasIndex(new[] { "Phone" }, "IX_Member_Phone");

                    b.HasIndex(new[] { "SID" }, "IX_Member_SID")
                        .IsUnique();

                    b.ToTable("Member", t =>
                        {
                            t.HasComment("회원 정보");
                        });
                });

            modelBuilder.Entity("bitforum.Models.Account.MemberApprove", b =>
                {
                    b.Property<int>("MemberID")
                        .HasColumnType("int")
                        .HasComment("회원 ID");

                    b.Property<bool>("IsDisclosureInvest")
                        .HasColumnType("bit")
                        .HasComment("투자 현황 공개 여부");

                    b.Property<bool>("IsReceiveEmail")
                        .HasColumnType("bit")
                        .HasComment("E-MAIL 수신 여부");

                    b.Property<bool>("IsReceiveNote")
                        .HasColumnType("bit")
                        .HasComment("쪽지 수신 여부");

                    b.Property<bool>("IsReceiveSMS")
                        .HasColumnType("bit")
                        .HasComment("SMS 수신 여부");

                    b.HasKey("MemberID");

                    b.ToTable("MemberApprove", t =>
                        {
                            t.HasComment("회원 동의 및 수신 여부");
                        });
                });

            modelBuilder.Entity("bitforum.Models.Account.MemberGrade", b =>
                {
                    b.Property<int>("ID")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasComment("PK");

                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("datetime2")
                        .HasComment("등록 일시");

                    b.Property<string>("Description")
                        .HasMaxLength(1000)
                        .HasColumnType("nvarchar(1000)")
                        .HasComment("설명");

                    b.Property<string>("EngName")
                        .IsRequired()
                        .HasMaxLength(120)
                        .HasColumnType("nvarchar(120)")
                        .HasComment("영문 명");

                    b.Property<string>("Image")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("이미지");

                    b.Property<bool>("IsActive")
                        .HasColumnType("bit")
                        .HasComment("사용 여부");

                    b.Property<string>("KorName")
                        .IsRequired()
                        .HasMaxLength(120)
                        .HasColumnType("nvarchar(120)")
                        .HasComment("한글 명");

                    b.Property<short>("Order")
                        .HasColumnType("smallint")
                        .HasComment("순서");

                    b.Property<int>("RequiredCoin")
                        .HasColumnType("int")
                        .HasComment("최소 코인(Coin)");

                    b.Property<int>("RequiredExp")
                        .HasColumnType("int")
                        .HasComment("최소 경험치(Exp)");

                    b.Property<DateTime?>("UpdatedAt")
                        .HasColumnType("datetime2")
                        .HasComment("수정 일시");

                    b.HasKey("ID");

                    b.HasIndex(new[] { "EngName" }, "IX_MemberGrade_EngName")
                        .IsUnique();

                    b.HasIndex(new[] { "IsActive" }, "IX_MemberGrade_IsActive");

                    b.HasIndex(new[] { "KorName" }, "IX_MemberGrade_KorName")
                        .IsUnique();

                    b.HasIndex(new[] { "Order" }, "IX_MemberGrade_Order");

                    b.ToTable("MemberGrade", t =>
                        {
                            t.HasComment("회원 등급");
                        });
                });

            modelBuilder.Entity("bitforum.Models.Account.RefreshToken", b =>
                {
                    b.Property<int>("ID")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasComment("PK");

                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("datetime2")
                        .HasComment("등록 일시");

                    b.Property<DateTime>("Expiration")
                        .HasColumnType("datetime2")
                        .HasComment("만료 일시");

                    b.Property<int>("MemberID")
                        .HasColumnType("int")
                        .HasComment("회원 ID");

                    b.Property<string>("Token")
                        .IsRequired()
                        .HasMaxLength(128)
                        .HasColumnType("nvarchar(128)")
                        .HasComment("Token");

                    b.HasKey("ID");

                    b.ToTable("RefreshToken");
                });

            modelBuilder.Entity("bitforum.Models.BBS.Board", b =>
                {
                    b.Property<int>("ID")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasComment("PK");

                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));

                    b.Property<int>("BoardGroupID")
                        .HasColumnType("int")
                        .HasComment("분류 ID");

                    b.Property<string>("Code")
                        .IsRequired()
                        .HasMaxLength(70)
                        .HasColumnType("nvarchar(70)")
                        .HasComment("게시판 주소");

                    b.Property<int>("Comments")
                        .HasColumnType("int")
                        .HasComment("댓글 수");

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("datetime2")
                        .HasComment("등록 일시");

                    b.Property<bool>("IsActive")
                        .HasColumnType("bit")
                        .HasComment("사용 여부");

                    b.Property<bool>("IsSearch")
                        .HasColumnType("bit")
                        .HasComment("검색 여부");

                    b.Property<string>("Name")
                        .IsRequired()
                        .HasMaxLength(70)
                        .HasColumnType("nvarchar(70)")
                        .HasComment("게시판 이름");

                    b.Property<short>("Order")
                        .HasColumnType("smallint")
                        .HasComment("순서");

                    b.Property<int>("Posts")
                        .HasColumnType("int")
                        .HasComment("게시글 수");

                    b.Property<DateTime?>("UpdatedAt")
                        .HasColumnType("datetime2")
                        .HasComment("수정 일시");

                    b.HasKey("ID");

                    b.HasIndex("BoardGroupID");

                    b.HasIndex(new[] { "Code" }, "IX_Board_Code")
                        .IsUnique();

                    b.HasIndex(new[] { "Comments" }, "IX_Board_Comments");

                    b.HasIndex(new[] { "IsActive" }, "IX_Board_IsActive");

                    b.HasIndex(new[] { "IsSearch" }, "IX_Board_IsSearch");

                    b.HasIndex(new[] { "Name" }, "IX_Board_Name");

                    b.HasIndex(new[] { "Order" }, "IX_Board_Order");

                    b.HasIndex(new[] { "Posts" }, "IX_Board_Posts");

                    b.ToTable("Board");
                });

            modelBuilder.Entity("bitforum.Models.BBS.BoardGroup", b =>
                {
                    b.Property<int>("ID")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasComment("PK");

                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));

                    b.Property<int>("Boards")
                        .HasColumnType("int")
                        .HasComment("게시판 수");

                    b.Property<string>("Code")
                        .IsRequired()
                        .HasMaxLength(70)
                        .HasColumnType("nvarchar(70)")
                        .HasComment("게시판 분류 주소");

                    b.Property<long>("Comments")
                        .HasColumnType("bigint")
                        .HasComment("댓글 수");

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("datetime2")
                        .HasComment("등록 일시");

                    b.Property<string>("Name")
                        .IsRequired()
                        .HasMaxLength(70)
                        .HasColumnType("nvarchar(70)")
                        .HasComment("게시판 분류 명");

                    b.Property<short>("Order")
                        .HasColumnType("smallint")
                        .HasComment("순서");

                    b.Property<long>("Posts")
                        .HasColumnType("bigint")
                        .HasComment("게시글 수");

                    b.Property<DateTime?>("UpdatedAt")
                        .HasColumnType("datetime2")
                        .HasComment("수정 일시");

                    b.HasKey("ID");

                    b.HasIndex(new[] { "Boards" }, "IX_BoardGroup_Boards");

                    b.HasIndex(new[] { "Code" }, "IX_BoardGroup_Code");

                    b.HasIndex(new[] { "Comments" }, "IX_BoardGroup_Comments");

                    b.HasIndex(new[] { "Name" }, "IX_BoardGroup_Name");

                    b.HasIndex(new[] { "Order" }, "IX_BoardGroup_Order");

                    b.HasIndex(new[] { "Posts" }, "IX_BoardGroup_Posts");

                    b.ToTable("BoardGroup");
                });

            modelBuilder.Entity("bitforum.Models.BBS.BoardMeta", b =>
                {
                    b.Property<int>("ID")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasComment("PK");

                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));

                    b.Property<int>("BoardID")
                        .HasColumnType("int")
                        .HasComment("게시판 ID");

                    b.HasKey("ID");

                    b.HasIndex("BoardID");

                    b.ToTable("BoardMeta");
                });

            modelBuilder.Entity("bitforum.Models.BBS.Comment", b =>
                {
                    b.Property<int>("ID")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasComment("PK");

                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));

                    b.Property<long>("Blames")
                        .HasColumnType("bigint")
                        .HasComment("신고 수");

                    b.Property<int>("BoardID")
                        .HasColumnType("int")
                        .HasComment("게시판 ID");

                    b.Property<string>("Content")
                        .IsRequired()
                        .HasMaxLength(4000)
                        .HasColumnType("nvarchar(4000)")
                        .HasComment("댓글 내용");

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("datetime2")
                        .HasComment("등록 일시");

                    b.Property<DateTime?>("DeletedAt")
                        .HasColumnType("datetime2")
                        .HasComment("삭제 일시");

                    b.Property<int>("Depth")
                        .HasColumnType("int")
                        .HasComment("댓글 깊이");

                    b.Property<long>("Dislikes")
                        .HasColumnType("bigint")
                        .HasComment("싫어요");

                    b.Property<string>("Email")
                        .HasMaxLength(60)
                        .HasColumnType("nvarchar(60)")
                        .HasComment("회원 이메일");

                    b.Property<string>("IpAddress")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("nvarchar(50)")
                        .HasComment("IP");

                    b.Property<bool>("IsDeleted")
                        .HasColumnType("bit")
                        .HasComment("삭제 여부");

                    b.Property<bool>("IsSecret")
                        .HasColumnType("bit")
                        .HasComment("비밀글 여부");

                    b.Property<long>("Likes")
                        .HasColumnType("bigint")
                        .HasComment("좋아요");

                    b.Property<int?>("MemberID")
                        .HasColumnType("int")
                        .HasComment("회원 ID");

                    b.Property<string>("Name")
                        .HasMaxLength(20)
                        .HasColumnType("nvarchar(20)")
                        .HasComment("회원 이름");

                    b.Property<int?>("ParentID")
                        .HasColumnType("int")
                        .HasComment("부모 댓글 ID");

                    b.Property<string>("Password")
                        .HasMaxLength(255)
                        .HasColumnType("nvarchar(255)")
                        .HasComment("댓글 비밀번호");

                    b.Property<int>("PostID")
                        .HasColumnType("int")
                        .HasComment("게시글 ID");

                    b.Property<long>("Replies")
                        .HasColumnType("bigint")
                        .HasComment("대댓글 수");

                    b.Property<string>("SID")
                        .HasMaxLength(20)
                        .HasColumnType("nvarchar(20)")
                        .HasComment("회원 SID");

                    b.Property<DateTime?>("UpdatedAt")
                        .HasColumnType("datetime2")
                        .HasComment("수정 일시");

                    b.Property<string>("UserAgent")
                        .IsRequired()
                        .HasMaxLength(255)
                        .HasColumnType("nvarchar(255)")
                        .HasComment("User-Agent");

                    b.HasKey("ID");

                    b.HasIndex("BoardID");

                    b.HasIndex("MemberID");

                    b.HasIndex("PostID");

                    b.HasIndex(new[] { "Blames" }, "IX_Comment_Blames");

                    b.HasIndex(new[] { "CreatedAt" }, "IX_Comment_CreatedAt");

                    b.HasIndex(new[] { "Dislikes" }, "IX_Comment_Dislikes");

                    b.HasIndex(new[] { "Email" }, "IX_Comment_Email");

                    b.HasIndex(new[] { "IsDeleted" }, "IX_Comment_IsDeleted");

                    b.HasIndex(new[] { "IsSecret" }, "IX_Comment_IsSecret");

                    b.HasIndex(new[] { "Likes" }, "IX_Comment_Likes");

                    b.HasIndex(new[] { "Name" }, "IX_Comment_Name");

                    b.HasIndex(new[] { "ParentID" }, "IX_Comment_ParentID");

                    b.HasIndex(new[] { "Replies" }, "IX_Comment_Replies");

                    b.HasIndex(new[] { "SID" }, "IX_Comment_SID");

                    b.ToTable("Comment");
                });

            modelBuilder.Entity("bitforum.Models.BBS.CommentMeta", b =>
                {
                    b.Property<int>("ID")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasComment("PK");

                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));

                    b.Property<bool>("AllowDeleteProtection")
                        .HasColumnType("bit")
                        .HasComment("댓글 보호 기능 (삭제 시)");

                    b.Property<bool>("AllowDisLike")
                        .HasColumnType("bit")
                        .HasComment("댓글 비공감 사용");

                    b.Property<bool>("AllowLike")
                        .HasColumnType("bit")
                        .HasComment("댓글 공감 사용");

                    b.Property<bool>("AllowSecret")
                        .HasColumnType("bit")
                        .HasComment("비밀글 사용");

                    b.Property<bool>("AllowUpdateProtection")
                        .HasColumnType("bit")
                        .HasComment("댓글 보호 기능 (수정 시)");

                    b.Property<int>("BlameHideCount")
                        .HasColumnType("int")
                        .HasComment("댓글 신고 시 숨김");

                    b.Property<int>("BoardID")
                        .HasColumnType("int")
                        .HasComment("게시판 ID");

                    b.Property<string>("ContentPlaceholder")
                        .HasMaxLength(1000)
                        .HasColumnType("nvarchar(1000)")
                        .HasComment("안내 문구");

                    b.Property<int>("DeleteProtectionDays")
                        .HasColumnType("int")
                        .HasComment("댓글 삭제 금지 기간");

                    b.Property<bool>("EnableComment")
                        .HasColumnType("bit")
                        .HasComment("댓글 사용");

                    b.Property<bool>("EnableCommentUpdateLog")
                        .HasColumnType("bit")
                        .HasComment("댓글 변경 기록");

                    b.Property<bool>("EnableEditor")
                        .HasColumnType("bit")
                        .HasComment("웹 에디터 사용");

                    b.Property<int>("MaxContentLength")
                        .HasColumnType("int")
                        .HasComment("최대 입력 글자");

                    b.Property<int>("MinContentLength")
                        .HasColumnType("int")
                        .HasComment("최소 입력 글자");

                    b.Property<int>("PerPage")
                        .HasColumnType("int")
                        .HasComment("목록 표시");

                    b.Property<bool>("ShowMemberIcon")
                        .HasColumnType("bit")
                        .HasComment("회원 아이콘 공개");

                    b.Property<bool>("ShowMemberPhoto")
                        .HasColumnType("bit")
                        .HasComment("회원 사진 공개");

                    b.Property<int>("UpdateProtectionDays")
                        .HasColumnType("int")
                        .HasComment("댓글 수정 금지 기간");

                    b.HasKey("ID");

                    b.HasIndex("BoardID");

                    b.ToTable("CommentMeta");
                });

            modelBuilder.Entity("bitforum.Models.BBS.Post", b =>
                {
                    b.Property<int>("ID")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasComment("PK");

                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));

                    b.Property<long>("Blames")
                        .HasColumnType("bigint")
                        .HasComment("신고 수");

                    b.Property<int>("BoardID")
                        .HasColumnType("int")
                        .HasComment("게시판 ID");

                    b.Property<long>("Comments")
                        .HasColumnType("bigint")
                        .HasComment("댓글 수");

                    b.Property<string>("Content")
                        .IsRequired()
                        .HasColumnType("nvarchar(max)")
                        .HasComment("내용");

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("datetime2")
                        .HasComment("등록 일시");

                    b.Property<DateTime?>("DeletedAt")
                        .HasColumnType("datetime2")
                        .HasComment("삭제 일시");

                    b.Property<long>("Dislikes")
                        .HasColumnType("bigint")
                        .HasComment("싫어요");

                    b.Property<string>("Email")
                        .HasMaxLength(60)
                        .HasColumnType("nvarchar(60)")
                        .HasComment("회원 이메일");

                    b.Property<short>("Files")
                        .HasColumnType("smallint")
                        .HasComment("파일 수");

                    b.Property<short>("Images")
                        .HasColumnType("smallint")
                        .HasComment("이미지 수");

                    b.Property<string>("IpAddress")
                        .IsRequired()
                        .HasMaxLength(50)
                        .HasColumnType("nvarchar(50)")
                        .HasComment("IP");

                    b.Property<bool>("IsDeleted")
                        .HasColumnType("bit")
                        .HasComment("삭제 여부");

                    b.Property<bool>("IsNotice")
                        .HasColumnType("bit")
                        .HasComment("일반 공지 여부");

                    b.Property<bool>("IsReply")
                        .HasColumnType("bit")
                        .HasComment("답변 여부");

                    b.Property<bool>("IsSecret")
                        .HasColumnType("bit")
                        .HasComment("비밀글 여부");

                    b.Property<bool>("IsSpeaker")
                        .HasColumnType("bit")
                        .HasComment("전체 공지 여부");

                    b.Property<DateTime?>("LastCommentUpdatedAt")
                        .HasColumnType("datetime2")
                        .HasComment("마지막 댓글 일시");

                    b.Property<DateTime?>("LastReplyUpdatedAt")
                        .HasColumnType("datetime2")
                        .HasComment("마지막 답변 일시");

                    b.Property<long>("Likes")
                        .HasColumnType("bigint")
                        .HasComment("좋아요");

                    b.Property<int?>("MemberID")
                        .HasColumnType("int")
                        .HasComment("회원 ID");

                    b.Property<string>("Name")
                        .HasMaxLength(20)
                        .HasColumnType("nvarchar(20)")
                        .HasComment("회원 이름");

                    b.Property<string>("Password")
                        .HasMaxLength(255)
                        .HasColumnType("nvarchar(255)")
                        .HasComment("게시글 비밀번호");

                    b.Property<string>("SID")
                        .HasMaxLength(20)
                        .HasColumnType("nvarchar(20)")
                        .HasComment("회원 SID");

                    b.Property<string>("Subject")
                        .IsRequired()
                        .HasMaxLength(255)
                        .HasColumnType("nvarchar(255)")
                        .HasComment("제목");

                    b.Property<short>("Tags")
                        .HasColumnType("smallint")
                        .HasComment("Tag 수");

                    b.Property<DateTime?>("UpdatedAt")
                        .HasColumnType("datetime2")
                        .HasComment("수정 일시");

                    b.Property<string>("UserAgent")
                        .IsRequired()
                        .HasMaxLength(255)
                        .HasColumnType("nvarchar(255)")
                        .HasComment("User-Agent");

                    b.Property<short>("Videos")
                        .HasColumnType("smallint")
                        .HasComment("동영상 수");

                    b.Property<long>("Views")
                        .HasColumnType("bigint")
                        .HasComment("조회 수");

                    b.HasKey("ID");

                    b.HasIndex("BoardID");

                    b.HasIndex("MemberID");

                    b.HasIndex(new[] { "Blames" }, "IX_Post_Blames");

                    b.HasIndex(new[] { "Comments" }, "IX_Post_Comments");

                    b.HasIndex(new[] { "CreatedAt" }, "IX_Post_CreatedAt");

                    b.HasIndex(new[] { "Dislikes" }, "IX_Post_Dislikes");

                    b.HasIndex(new[] { "Email" }, "IX_Post_Email");

                    b.HasIndex(new[] { "Files" }, "IX_Post_Files");

                    b.HasIndex(new[] { "Images" }, "IX_Post_Images");

                    b.HasIndex(new[] { "IsDeleted" }, "IX_Post_IsDeleted");

                    b.HasIndex(new[] { "IsNotice" }, "IX_Post_IsNotice");

                    b.HasIndex(new[] { "IsReply" }, "IX_Post_IsReply");

                    b.HasIndex(new[] { "IsSecret" }, "IX_Post_IsSecret");

                    b.HasIndex(new[] { "IsSpeaker" }, "IX_Post_IsSpeaker");

                    b.HasIndex(new[] { "LastCommentUpdatedAt" }, "IX_Post_LastCommentUpdatedAt");

                    b.HasIndex(new[] { "LastReplyUpdatedAt" }, "IX_Post_LastReplyUpdatedAt");

                    b.HasIndex(new[] { "Likes" }, "IX_Post_Likes");

                    b.HasIndex(new[] { "Name" }, "IX_Post_Name");

                    b.HasIndex(new[] { "SID" }, "IX_Post_SID");

                    b.HasIndex(new[] { "Subject" }, "IX_Post_Subject");

                    b.HasIndex(new[] { "Tags" }, "IX_Post_Tags");

                    b.HasIndex(new[] { "Videos" }, "IX_Post_Videos");

                    b.HasIndex(new[] { "Views" }, "IX_Post_Views");

                    b.ToTable("Post");
                });

            modelBuilder.Entity("bitforum.Models.BBS.PostMeta", b =>
                {
                    b.Property<int>("ID")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasComment("PK");

                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));

                    b.Property<int>("BoardID")
                        .HasColumnType("int")
                        .HasComment("게시판 ID");

                    b.HasKey("ID");

                    b.HasIndex("BoardID");

                    b.ToTable("PostMeta");
                });

            modelBuilder.Entity("bitforum.Models.Config", b =>
                {
                    b.Property<int>("ID")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int");

                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("datetime2");

                    b.Property<string>("Description")
                        .HasColumnType("nvarchar(max)");

                    b.Property<string>("Key")
                        .IsRequired()
                        .HasColumnType("nvarchar(450)");

                    b.Property<string>("Value")
                        .HasColumnType("nvarchar(max)");

                    b.HasKey("ID");

                    b.HasIndex("Key")
                        .IsUnique();

                    b.ToTable("Config");
                });

            modelBuilder.Entity("bitforum.Models.Log.EmailChangeLog", b =>
                {
                    b.Property<int>("ID")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasComment("PK");

                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));

                    b.Property<string>("AfterEmail")
                        .IsRequired()
                        .HasMaxLength(40)
                        .HasColumnType("nvarchar(40)")
                        .HasComment("바꾼 이메일");

                    b.Property<string>("BeforeEmail")
                        .HasMaxLength(40)
                        .HasColumnType("nvarchar(40)")
                        .HasComment("이전 이메일");

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("datetime2")
                        .HasComment("등록 일시");

                    b.Property<int>("MemberID")
                        .HasColumnType("int")
                        .HasComment("회원 ID");

                    b.HasKey("ID");

                    b.HasIndex(new[] { "MemberID" }, "IX_EmailChangeLog_MemberID");

                    b.ToTable("EmailChangeLog", t =>
                        {
                            t.HasComment("이메일 변경 내역");
                        });
                });

            modelBuilder.Entity("bitforum.Models.Log.EmailLog", b =>
                {
                    b.Property<int>("ID")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasComment("PK");

                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("datetime2")
                        .HasComment("등록 일시");

                    b.Property<string>("FromAddress")
                        .IsRequired()
                        .HasMaxLength(120)
                        .HasColumnType("nvarchar(120)")
                        .HasComment("발신 주소");

                    b.Property<string>("FromName")
                        .HasMaxLength(60)
                        .HasColumnType("nvarchar(60)")
                        .HasComment("발신자");

                    b.Property<int?>("MemberID")
                        .HasColumnType("int")
                        .HasComment("회원 ID");

                    b.Property<string>("Message")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("내용");

                    b.Property<DateTime?>("ProcessedAt")
                        .HasColumnType("datetime2")
                        .HasComment("처리 일시");

                    b.Property<string>("Status")
                        .IsRequired()
                        .HasColumnType("nvarchar(20)")
                        .HasComment("처리 여부");

                    b.Property<string>("Subject")
                        .IsRequired()
                        .HasMaxLength(255)
                        .HasColumnType("nvarchar(255)")
                        .HasComment("제목");

                    b.Property<string>("ToAddress")
                        .IsRequired()
                        .HasMaxLength(120)
                        .HasColumnType("nvarchar(120)")
                        .HasComment("수신 주소");

                    b.Property<string>("ToName")
                        .HasMaxLength(60)
                        .HasColumnType("nvarchar(60)")
                        .HasComment("수신자");

                    b.HasKey("ID");

                    b.HasIndex(new[] { "MemberID" }, "IX_EmailLog_MemberID");

                    b.HasIndex(new[] { "Status" }, "IX_EmailLog_Status");

                    b.ToTable("EmailLog");
                });

            modelBuilder.Entity("bitforum.Models.Log.LoginLog", b =>
                {
                    b.Property<int>("ID")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasComment("PK");

                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));

                    b.Property<string>("Account")
                        .IsRequired()
                        .HasMaxLength(120)
                        .HasColumnType("nvarchar(120)")
                        .HasComment("로그인 시도한 계정");

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("datetime2")
                        .HasComment("등록 일시");

                    b.Property<string>("IpAddress")
                        .HasMaxLength(15)
                        .HasColumnType("nvarchar(15)")
                        .HasComment("IP Address");

                    b.Property<int?>("MemberID")
                        .HasColumnType("int")
                        .HasComment("회원 ID");

                    b.Property<string>("Reason")
                        .HasMaxLength(255)
                        .HasColumnType("nvarchar(255)")
                        .HasComment("실패 이유");

                    b.Property<string>("Referer")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("이전 페이지 주소");

                    b.Property<bool>("Success")
                        .HasColumnType("bit")
                        .HasComment("로그인 성공 여부 (0: 실패, 1: 성공)");

                    b.Property<string>("Url")
                        .HasMaxLength(500)
                        .HasColumnType("nvarchar(500)")
                        .HasComment("요청 주소");

                    b.Property<string>("UserAgent")
                        .HasMaxLength(512)
                        .HasColumnType("nvarchar(512)")
                        .HasComment("User Agent");

                    b.HasKey("ID");

                    b.HasIndex("MemberID");

                    b.ToTable("LoginLog", t =>
                        {
                            t.HasComment("로그인 기록");
                        });
                });

            modelBuilder.Entity("bitforum.Models.Log.NameChangeLog", b =>
                {
                    b.Property<int>("ID")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasComment("PK");

                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));

                    b.Property<string>("AfterName")
                        .IsRequired()
                        .HasMaxLength(40)
                        .HasColumnType("nvarchar(40)")
                        .HasComment("바꾼 별명");

                    b.Property<string>("BeforeName")
                        .HasMaxLength(40)
                        .HasColumnType("nvarchar(40)")
                        .HasComment("이전 별명");

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("datetime2")
                        .HasComment("등록 일시");

                    b.Property<int>("MemberID")
                        .HasColumnType("int")
                        .HasComment("회원 ID");

                    b.HasKey("ID");

                    b.HasIndex(new[] { "MemberID" }, "IX_NameChangeLog_MemberID");

                    b.ToTable("NameChangeLog", t =>
                        {
                            t.HasComment("별명 변경 내역");
                        });
                });

            modelBuilder.Entity("bitforum.Models.Page.Banner.BannerItem", b =>
                {
                    b.Property<int>("ID")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasComment("PK");

                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("datetime2")
                        .HasComment("등록 일시");

                    b.Property<DateTime?>("EndAt")
                        .HasColumnType("datetime2")
                        .HasComment("사용 기간 - 종료");

                    b.Property<int?>("Height")
                        .HasColumnType("int")
                        .HasComment("세로 크기");

                    b.Property<string>("Image")
                        .HasMaxLength(1024)
                        .HasColumnType("nvarchar(1024)")
                        .HasComment("이미지");

                    b.Property<bool>("IsActive")
                        .HasColumnType("bit")
                        .HasComment("사용 여부");

                    b.Property<string>("Link")
                        .HasMaxLength(255)
                        .HasColumnType("nvarchar(255)")
                        .HasComment("주소");

                    b.Property<int>("Order")
                        .HasColumnType("int")
                        .HasComment("순서");

                    b.Property<int>("PositionID")
                        .HasColumnType("int")
                        .HasComment("배너 위치 ID");

                    b.Property<DateTime?>("StartAt")
                        .HasColumnType("datetime2")
                        .HasComment("사용 기간 - 시작");

                    b.Property<string>("Subject")
                        .IsRequired()
                        .HasMaxLength(255)
                        .HasColumnType("nvarchar(255)")
                        .HasComment("배너 명");

                    b.Property<DateTime?>("UpdatedAt")
                        .HasColumnType("datetime2")
                        .HasComment("수정 일시");

                    b.Property<int>("Views")
                        .HasColumnType("int")
                        .HasComment("조회 수");

                    b.Property<int?>("Width")
                        .HasColumnType("int")
                        .HasComment("가로 크기");

                    b.HasKey("ID");

                    b.HasIndex("PositionID");

                    b.HasIndex(new[] { "IsActive" }, "IX_BannerItem_IsActive");

                    b.HasIndex(new[] { "Order" }, "IX_BannerItem_Order");

                    b.ToTable("BannerItem");
                });

            modelBuilder.Entity("bitforum.Models.Page.Banner.BannerPosition", b =>
                {
                    b.Property<int>("ID")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasComment("PK");

                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));

                    b.Property<string>("Code")
                        .IsRequired()
                        .HasMaxLength(30)
                        .HasColumnType("nvarchar(30)")
                        .HasComment("위치 구분");

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("datetime2")
                        .HasComment("등록 일시");

                    b.Property<bool>("IsActive")
                        .HasColumnType("bit")
                        .HasComment("사용 여부");

                    b.Property<string>("Subject")
                        .IsRequired()
                        .HasMaxLength(255)
                        .HasColumnType("nvarchar(255)")
                        .HasComment("위치 명");

                    b.Property<DateTime?>("UpdatedAt")
                        .HasColumnType("datetime2")
                        .HasComment("수정 일시");

                    b.HasKey("ID");

                    b.HasIndex(new[] { "Code" }, "IX_BannerPosition_Code")
                        .IsUnique();

                    b.HasIndex(new[] { "IsActive" }, "IX_BannerPosition_IsActive");

                    b.ToTable("BannerPosition");
                });

            modelBuilder.Entity("bitforum.Models.Page.Document", b =>
                {
                    b.Property<int>("ID")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasComment("PK");

                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));

                    b.Property<string>("Code")
                        .IsRequired()
                        .HasMaxLength(30)
                        .HasColumnType("nvarchar(30)")
                        .HasComment("주소");

                    b.Property<string>("Content")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("내용");

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("datetime2")
                        .HasComment("등록 일시");

                    b.Property<bool>("IsActive")
                        .HasColumnType("bit")
                        .HasComment("사용 여부");

                    b.Property<string>("Subject")
                        .IsRequired()
                        .HasMaxLength(120)
                        .HasColumnType("nvarchar(120)")
                        .HasComment("제목");

                    b.Property<DateTime?>("UpdatedAt")
                        .HasColumnType("datetime2")
                        .HasComment("수정 일시");

                    b.Property<int>("Views")
                        .HasColumnType("int")
                        .HasComment("조회 수");

                    b.HasKey("ID");

                    b.HasIndex(new[] { "Code" }, "IX_Document_Code")
                        .IsUnique();

                    b.HasIndex(new[] { "IsActive" }, "IX_Document_IsActive");

                    b.ToTable("Document");
                });

            modelBuilder.Entity("bitforum.Models.Page.Faq.FaqCategory", b =>
                {
                    b.Property<int>("ID")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasComment("PK");

                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));

                    b.Property<string>("Code")
                        .IsRequired()
                        .HasMaxLength(30)
                        .HasColumnType("nvarchar(30)")
                        .HasComment("주소");

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("datetime2")
                        .HasComment("등록 일시");

                    b.Property<bool>("IsActive")
                        .HasColumnType("bit")
                        .HasComment("사용 여부");

                    b.Property<int>("Order")
                        .HasColumnType("int")
                        .HasComment("순서");

                    b.Property<string>("Subject")
                        .IsRequired()
                        .HasMaxLength(255)
                        .HasColumnType("nvarchar(255)")
                        .HasComment("분류 명");

                    b.Property<DateTime?>("UpdatedAt")
                        .HasColumnType("datetime2")
                        .HasComment("수정 일시");

                    b.HasKey("ID");

                    b.HasIndex(new[] { "Code" }, "IX_FaqCategory_Code")
                        .IsUnique();

                    b.HasIndex(new[] { "Order" }, "IX_FaqCategory_Order");

                    b.ToTable("FaqCategory");
                });

            modelBuilder.Entity("bitforum.Models.Page.Faq.FaqItem", b =>
                {
                    b.Property<int>("ID")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasComment("PK");

                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));

                    b.Property<string>("Answer")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("답변");

                    b.Property<int>("CategoryID")
                        .HasColumnType("int")
                        .HasComment("분류 ID");

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("datetime2")
                        .HasComment("등록 일시");

                    b.Property<bool>("IsActive")
                        .HasColumnType("bit")
                        .HasComment("사용 여부");

                    b.Property<int>("Order")
                        .HasColumnType("int")
                        .HasComment("순서");

                    b.Property<string>("Question")
                        .IsRequired()
                        .HasMaxLength(255)
                        .HasColumnType("nvarchar(255)")
                        .HasComment("질문");

                    b.Property<DateTime?>("UpdatedAt")
                        .HasColumnType("datetime2")
                        .HasComment("수정 일시");

                    b.Property<int>("Views")
                        .HasColumnType("int")
                        .HasComment("조회 수");

                    b.HasKey("ID");

                    b.HasIndex("CategoryID");

                    b.HasIndex(new[] { "IsActive" }, "IX_FaqItem_IsActive");

                    b.HasIndex(new[] { "Order" }, "IX_FaqItem_Order");

                    b.ToTable("FaqItem");
                });

            modelBuilder.Entity("bitforum.Models.Page.Popup", b =>
                {
                    b.Property<int>("ID")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .HasComment("PK");

                    SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));

                    b.Property<string>("Content")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("내용");

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("datetime2")
                        .HasComment("등록 일시");

                    b.Property<DateTime?>("EndAt")
                        .HasColumnType("datetime2")
                        .HasComment("사용 기간 - 종료");

                    b.Property<bool>("IsActive")
                        .HasColumnType("bit")
                        .HasComment("사용 여부");

                    b.Property<string>("Link")
                        .HasMaxLength(255)
                        .HasColumnType("nvarchar(255)")
                        .HasComment("주소");

                    b.Property<short>("Order")
                        .HasColumnType("smallint")
                        .HasComment("순서");

                    b.Property<DateTime?>("StartAt")
                        .HasColumnType("datetime2")
                        .HasComment("사용 기간 - 시작");

                    b.Property<string>("Subject")
                        .IsRequired()
                        .HasMaxLength(255)
                        .HasColumnType("nvarchar(255)")
                        .HasComment("제목");

                    b.Property<DateTime?>("UpdatedAt")
                        .HasColumnType("datetime2")
                        .HasComment("수정 일시");

                    b.Property<int>("Views")
                        .HasColumnType("int")
                        .HasComment("조회 수");

                    b.HasKey("ID");

                    b.HasIndex(new[] { "IsActive" }, "IX_Popup_IsActive");

                    b.HasIndex(new[] { "Order" }, "IX_Popup_Order");

                    b.ToTable("Popup");
                });

            modelBuilder.Entity("bitforum.Models.Account.Member", b =>
                {
                    b.HasOne("bitforum.Models.Account.MemberGrade", "MemberGrade")
                        .WithMany()
                        .HasForeignKey("GradeID");

                    b.Navigation("MemberGrade");
                });

            modelBuilder.Entity("bitforum.Models.Account.MemberApprove", b =>
                {
                    b.HasOne("bitforum.Models.Account.Member", "Member")
                        .WithOne("MemberApprove")
                        .HasForeignKey("bitforum.Models.Account.MemberApprove", "MemberID")
                        .OnDelete(DeleteBehavior.NoAction)
                        .IsRequired();

                    b.Navigation("Member");
                });

            modelBuilder.Entity("bitforum.Models.BBS.Board", b =>
                {
                    b.HasOne("bitforum.Models.BBS.BoardGroup", "BoardGroup")
                        .WithMany("Board")
                        .HasForeignKey("BoardGroupID")
                        .OnDelete(DeleteBehavior.NoAction)
                        .IsRequired();

                    b.Navigation("BoardGroup");
                });

            modelBuilder.Entity("bitforum.Models.BBS.BoardMeta", b =>
                {
                    b.HasOne("bitforum.Models.BBS.Board", "Board")
                        .WithMany()
                        .HasForeignKey("BoardID")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.OwnsOne("bitforum.Models.BBS.BoardExpMeta", "Exp", b1 =>
                        {
                            b1.Property<int>("BoardMetaID")
                                .HasColumnType("int");

                            b1.Property<int>("CommentWriteExp")
                                .HasColumnType("int")
                                .HasComment("댓글 작성");

                            b1.Property<int>("CommentWriteExpWithinDays")
                                .HasColumnType("int")
                                .HasComment("댓글 작성 기한");

                            b1.Property<int>("CommentWriteUndoExp")
                                .HasColumnType("int")
                                .HasComment("댓글 작성 취소");

                            b1.Property<bool>("EnableExp")
                                .HasColumnType("bit")
                                .HasComment("경험치 기능");

                            b1.Property<short>("FileDownloadExp")
                                .HasColumnType("smallint")
                                .HasComment("파일 다운로드");

                            b1.Property<int>("FileUploadExp")
                                .HasColumnType("int")
                                .HasComment("파일 업로드");

                            b1.Property<int>("FileUploadExpWithinDays")
                                .HasColumnType("int")
                                .HasComment("파일 업로드 기한");

                            b1.Property<int>("FileUploadUndoExp")
                                .HasColumnType("int")
                                .HasComment("파일 업로드 취소");

                            b1.Property<int>("OtherCommentDisLikeExp")
                                .HasColumnType("int")
                                .HasComment("댓글 싫어요");

                            b1.Property<int>("OtherCommentDisLikeExpWithinDays")
                                .HasColumnType("int")
                                .HasComment("댓글 싫어요 기한");

                            b1.Property<int>("OtherCommentDisLikeUndoExp")
                                .HasColumnType("int")
                                .HasComment("댓글 싫어요 취소");

                            b1.Property<int>("OtherCommentLikeExp")
                                .HasColumnType("int")
                                .HasComment("댓글 좋아요");

                            b1.Property<int>("OtherCommentLikeExpWithinDays")
                                .HasColumnType("int")
                                .HasComment("댓글 좋아요 기한");

                            b1.Property<int>("OtherCommentLikeUndoExp")
                                .HasColumnType("int")
                                .HasComment("댓글 좋아요 취소");

                            b1.Property<int>("OtherPostDisLikeExp")
                                .HasColumnType("int")
                                .HasComment("게시글 싫어요");

                            b1.Property<int>("OtherPostDisLikeExpWithinDays")
                                .HasColumnType("int")
                                .HasComment("게시글 싫어요 기한");

                            b1.Property<int>("OtherPostDisLikeUndoExp")
                                .HasColumnType("int")
                                .HasComment("게시글 싫어요 취소");

                            b1.Property<int>("OtherPostLikeExp")
                                .HasColumnType("int")
                                .HasComment("게시글 좋아요");

                            b1.Property<int>("OtherPostLikeExpWithinDays")
                                .HasColumnType("int")
                                .HasComment("게시글 좋아요 기한");

                            b1.Property<int>("OtherPostLikeUndoExp")
                                .HasColumnType("int")
                                .HasComment("게시글 좋아요 취소");

                            b1.Property<short>("OtherPostReadExp")
                                .HasColumnType("smallint")
                                .HasComment("게시글 읽기");

                            b1.Property<int>("OtherPostReadExpWithinDays")
                                .HasColumnType("int")
                                .HasComment("게시글 읽기 기한");

                            b1.Property<int>("OtherPostReadUndoExp")
                                .HasColumnType("int")
                                .HasComment("게시글 읽기 취소");

                            b1.Property<short>("OwnCommentDisLikeExp")
                                .HasColumnType("smallint")
                                .HasComment("내 댓글 싫어요");

                            b1.Property<int>("OwnCommentDisLikeExpWithinDays")
                                .HasColumnType("int")
                                .HasComment("내 댓글 싫어요 기한");

                            b1.Property<int>("OwnCommentDisLikeUndoExp")
                                .HasColumnType("int")
                                .HasComment("내 댓글 싫어요 취소");

                            b1.Property<int>("OwnCommentLikeExp")
                                .HasColumnType("int")
                                .HasComment("내 댓글 좋아요");

                            b1.Property<int>("OwnCommentLikeExpWithinDays")
                                .HasColumnType("int")
                                .HasComment("내 댓글 좋아요 기한");

                            b1.Property<int>("OwnCommentLikeUndoExp")
                                .HasColumnType("int")
                                .HasComment("내 댓글 좋아요 취소");

                            b1.Property<short>("OwnPostDisLikeExp")
                                .HasColumnType("smallint")
                                .HasComment("내 게시글 싫어요");

                            b1.Property<int>("OwnPostDisLikeExpWithinDays")
                                .HasColumnType("int")
                                .HasComment("내 게시글 싫어요 기한");

                            b1.Property<int>("OwnPostDisLikeUndoExp")
                                .HasColumnType("int")
                                .HasComment("내 게시글 싫어요 취소");

                            b1.Property<int>("OwnPostLikeExp")
                                .HasColumnType("int")
                                .HasComment("내 게시글 좋아요");

                            b1.Property<int>("OwnPostLikeExpWithinDays")
                                .HasColumnType("int")
                                .HasComment("내 게시글 좋아요 기한");

                            b1.Property<int>("OwnPostLikeUndoExp")
                                .HasColumnType("int")
                                .HasComment("내 게시글 좋아요 취소");

                            b1.Property<int>("OwnPostReadExp")
                                .HasColumnType("int")
                                .HasComment("내 게시글 읽힘");

                            b1.Property<int>("OwnPostReadExpWithinDays")
                                .HasColumnType("int")
                                .HasComment("내 게시글 읽힘 기한");

                            b1.Property<int>("OwnPostReadUndoExp")
                                .HasColumnType("int")
                                .HasComment("내 게시글 읽힘 취소");

                            b1.Property<int>("PostWriteExp")
                                .HasColumnType("int")
                                .HasComment("게시글 작성");

                            b1.Property<int>("PostWriteExpWithinDays")
                                .HasColumnType("int")
                                .HasComment("게시글 작성 기한");

                            b1.Property<int>("PostWriteUndoExp")
                                .HasColumnType("int")
                                .HasComment("게시글 작성 취소");

                            b1.Property<bool>("ShowExpGuide")
                                .HasColumnType("bit")
                                .HasComment("경험치 안내");

                            b1.HasKey("BoardMetaID");

                            b1.ToTable("BoardMeta");

                            b1.WithOwner()
                                .HasForeignKey("BoardMetaID");
                        });

                    b.OwnsOne("bitforum.Models.BBS.BoardListMeta", "List", b1 =>
                        {
                            b1.Property<int>("BoardMetaID")
                                .HasColumnType("int");

                            b1.Property<bool>("AlwaysShowWriteButton")
                                .HasColumnType("bit")
                                .HasComment("글쓰기 버튼 보이기");

                            b1.Property<bool>("ExceptNotice")
                                .HasColumnType("bit")
                                .HasComment("공지사항 제외 여부");

                            b1.Property<bool>("ExceptSpeaker")
                                .HasColumnType("bit")
                                .HasComment("전체공지 제외 여부");

                            b1.Property<string>("FooterContent")
                                .HasColumnType("nvarchar(max)")
                                .HasComment("하단 내용");

                            b1.Property<string>("HeaderContent")
                                .HasColumnType("nvarchar(max)")
                                .HasComment("상단 내용");

                            b1.Property<bool>("IsHotIcon")
                                .HasColumnType("bit")
                                .HasComment("HOT 사용 여부");

                            b1.Property<bool>("IsNewIcon")
                                .HasColumnType("bit")
                                .HasComment("NEW 사용 여부");

                            b1.Property<int?>("Layout")
                                .HasColumnType("int")
                                .HasComment("게시판 종류");

                            b1.Property<int?>("OrderBy")
                                .HasColumnType("int")
                                .HasComment("기본 정렬");

                            b1.Property<byte>("PerPage")
                                .HasColumnType("tinyint")
                                .HasComment("목록 표시");

                            b1.Property<bool>("ShowFooterListView")
                                .HasColumnType("bit")
                                .HasComment("하단 목록 보이기");

                            b1.HasKey("BoardMetaID");

                            b1.ToTable("BoardMeta");

                            b1.WithOwner()
                                .HasForeignKey("BoardMetaID");
                        });

                    b.OwnsOne("bitforum.Models.BBS.BoardNotifyMeta", "Notify", b1 =>
                        {
                            b1.Property<int>("BoardMetaID")
                                .HasColumnType("int");

                            b1.Property<int?>("CommentWriteNotify")
                                .HasColumnType("int")
                                .HasComment("댓글 작성 시");

                            b1.Property<int?>("PostWriteNotify")
                                .HasColumnType("int")
                                .HasComment("게시글 작성 시");

                            b1.Property<int?>("ReplyWriteNotify")
                                .HasColumnType("int")
                                .HasComment("답글 작성 시");

                            b1.HasKey("BoardMetaID");

                            b1.ToTable("BoardMeta");

                            b1.WithOwner()
                                .HasForeignKey("BoardMetaID");
                        });

                    b.OwnsOne("bitforum.Models.BBS.BoardPermissionMeta", "Permission", b1 =>
                        {
                            b1.Property<int>("BoardMetaID")
                                .HasColumnType("int");

                            b1.Property<int>("BoardAccess")
                                .HasColumnType("int")
                                .HasComment("게시판 접근");

                            b1.Property<int>("CommentView")
                                .HasColumnType("int")
                                .HasComment("댓글 목록");

                            b1.Property<int>("CommentWrite")
                                .HasColumnType("int")
                                .HasComment("댓글 작성");

                            b1.Property<int>("FileDownload")
                                .HasColumnType("int")
                                .HasComment("파일 다운로드");

                            b1.Property<int>("FileUpload")
                                .HasColumnType("int")
                                .HasComment("파일 업로드");

                            b1.Property<int>("PostView")
                                .HasColumnType("int")
                                .HasComment("글 열람");

                            b1.Property<int>("PostWrite")
                                .HasColumnType("int")
                                .HasComment("글 작성");

                            b1.Property<int>("ReplyWrite")
                                .HasColumnType("int")
                                .HasComment("답글 작성");

                            b1.HasKey("BoardMetaID");

                            b1.ToTable("BoardMeta");

                            b1.WithOwner()
                                .HasForeignKey("BoardMetaID");
                        });

                    b.Navigation("Board");

                    b.Navigation("Exp")
                        .IsRequired();

                    b.Navigation("List")
                        .IsRequired();

                    b.Navigation("Notify")
                        .IsRequired();

                    b.Navigation("Permission")
                        .IsRequired();
                });

            modelBuilder.Entity("bitforum.Models.BBS.Comment", b =>
                {
                    b.HasOne("bitforum.Models.BBS.Board", "Board")
                        .WithMany()
                        .HasForeignKey("BoardID")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.HasOne("bitforum.Models.Account.Member", "Member")
                        .WithMany()
                        .HasForeignKey("MemberID");

                    b.HasOne("bitforum.Models.BBS.Comment", "Parent")
                        .WithMany("Reply")
                        .HasForeignKey("ParentID")
                        .OnDelete(DeleteBehavior.NoAction);

                    b.HasOne("bitforum.Models.BBS.Post", "Post")
                        .WithMany("Comment")
                        .HasForeignKey("PostID")
                        .OnDelete(DeleteBehavior.NoAction)
                        .IsRequired();

                    b.Navigation("Board");

                    b.Navigation("Member");

                    b.Navigation("Parent");

                    b.Navigation("Post");
                });

            modelBuilder.Entity("bitforum.Models.BBS.CommentMeta", b =>
                {
                    b.HasOne("bitforum.Models.BBS.Board", "Board")
                        .WithMany()
                        .HasForeignKey("BoardID")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("Board");
                });

            modelBuilder.Entity("bitforum.Models.BBS.Post", b =>
                {
                    b.HasOne("bitforum.Models.BBS.Board", "Board")
                        .WithMany("Post")
                        .HasForeignKey("BoardID")
                        .OnDelete(DeleteBehavior.NoAction)
                        .IsRequired();

                    b.HasOne("bitforum.Models.Account.Member", "Member")
                        .WithMany()
                        .HasForeignKey("MemberID");

                    b.Navigation("Board");

                    b.Navigation("Member");
                });

            modelBuilder.Entity("bitforum.Models.BBS.PostMeta", b =>
                {
                    b.HasOne("bitforum.Models.BBS.Board", "Board")
                        .WithMany()
                        .HasForeignKey("BoardID")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.OwnsOne("bitforum.Models.BBS.PostGeneralMeta", "General", b1 =>
                        {
                            b1.Property<int>("PostMetaID")
                                .HasColumnType("int");

                            b1.Property<bool>("AllowDeleteProtection")
                                .HasColumnType("bit")
                                .HasComment("게시글 보호 기능 (삭제 시)");

                            b1.Property<bool>("AllowUpdateProtection")
                                .HasColumnType("bit")
                                .HasComment("게시글 보호 기능 (수정 시)");

                            b1.Property<int>("DeleteProtectionDays")
                                .HasColumnType("int")
                                .HasComment("게시글 삭제 금지 기간");

                            b1.Property<bool>("EnableFileDownLog")
                                .HasColumnType("bit")
                                .HasComment("다운로드 기록");

                            b1.Property<bool>("EnablePostUpdateLog")
                                .HasColumnType("bit")
                                .HasComment("게시글 변경 기록");

                            b1.Property<int>("UpdateProtectionDays")
                                .HasColumnType("int")
                                .HasComment("게시글 수정/삭제 금지 기간");

                            b1.HasKey("PostMetaID");

                            b1.ToTable("PostMeta");

                            b1.WithOwner()
                                .HasForeignKey("PostMetaID");
                        });

                    b.OwnsOne("bitforum.Models.BBS.PostViewMeta", "List", b1 =>
                        {
                            b1.Property<int>("PostMetaID")
                                .HasColumnType("int");

                            b1.Property<bool>("AllowBlame")
                                .HasColumnType("bit")
                                .HasComment("신고 기능");

                            b1.Property<bool>("AllowBookmark")
                                .HasColumnType("bit")
                                .HasComment("즐겨찾기 기능");

                            b1.Property<bool>("AllowContentLinkTargetBlank")
                                .HasColumnType("bit")
                                .HasComment("전체공지 제외 여부");

                            b1.Property<bool>("AllowDislike")
                                .HasColumnType("bit")
                                .HasComment("비공감 기능");

                            b1.Property<bool>("AllowLike")
                                .HasColumnType("bit")
                                .HasComment("공감 기능");

                            b1.Property<bool>("AllowPostUrlCopy")
                                .HasColumnType("bit")
                                .HasComment("주소 복사 버튼");

                            b1.Property<bool>("AllowPostUrlQrCode")
                                .HasColumnType("bit")
                                .HasComment("글 주소 QR 코드");

                            b1.Property<bool>("AllowPrevNextBotton")
                                .HasColumnType("bit")
                                .HasComment("이전글, 다음글 버튼");

                            b1.Property<bool>("AllowPrint")
                                .HasColumnType("bit")
                                .HasComment("본문 인쇄 기능");

                            b1.Property<bool>("AllowSnsShare")
                                .HasColumnType("bit")
                                .HasComment("SNS 보내기 기능");

                            b1.Property<int>("BlameHideCount")
                                .HasColumnType("int")
                                .HasComment("신고 시 숨김");

                            b1.Property<bool>("ShowMemberIcon")
                                .HasColumnType("bit")
                                .HasComment("회원 아이콘 공개");

                            b1.Property<bool>("ShowMemberPhoto")
                                .HasColumnType("bit")
                                .HasComment("회원 사진 공개");

                            b1.Property<bool>("ShowMemberRegDate")
                                .HasColumnType("bit")
                                .HasComment("회원 가입일 공개");

                            b1.HasKey("PostMetaID");

                            b1.ToTable("PostMeta");

                            b1.WithOwner()
                                .HasForeignKey("PostMetaID");
                        });

                    b.OwnsOne("bitforum.Models.BBS.PostWriteMeta", "Write", b1 =>
                        {
                            b1.Property<int>("PostMetaID")
                                .HasColumnType("int");

                            b1.Property<bool>("AllowEditor")
                                .HasColumnType("bit")
                                .HasComment("웹 에디터 사용");

                            b1.Property<bool>("AllowSaveExternalImage")
                                .HasColumnType("bit")
                                .HasComment("외부 이미지 수집");

                            b1.Property<bool>("AllowSecret")
                                .HasColumnType("bit")
                                .HasComment("비밀글 사용");

                            b1.Property<bool>("AllowTag")
                                .HasColumnType("bit")
                                .HasComment("Tag 사용");

                            b1.Property<string>("DefaultContent")
                                .HasMaxLength(4000)
                                .HasColumnType("nvarchar(4000)")
                                .HasComment("기본 내용");

                            b1.Property<string>("DefaultSubject")
                                .HasMaxLength(255)
                                .HasColumnType("nvarchar(255)")
                                .HasComment("기본 제목");

                            b1.Property<bool>("EnableUploadFile")
                                .HasColumnType("bit")
                                .HasComment("파일 사용");

                            b1.Property<string>("FooterContent")
                                .HasMaxLength(4000)
                                .HasColumnType("nvarchar(4000)")
                                .HasComment("작성란 하단 내용");

                            b1.Property<string>("HeaderContent")
                                .HasMaxLength(4000)
                                .HasColumnType("nvarchar(4000)")
                                .HasComment("작성란 상단 내용");

                            b1.Property<string>("UploadFileExtension")
                                .HasMaxLength(200)
                                .HasColumnType("nvarchar(200)")
                                .HasComment("파일 허용 확장자");

                            b1.Property<int>("UploadFileMaxSize")
                                .HasColumnType("int")
                                .HasComment("파일 용량 제한");

                            b1.Property<byte>("UploadFilesLimit")
                                .HasColumnType("tinyint")
                                .HasComment("파일 개수 제한");

                            b1.HasKey("PostMetaID");

                            b1.ToTable("PostMeta");

                            b1.WithOwner()
                                .HasForeignKey("PostMetaID");
                        });

                    b.Navigation("Board");

                    b.Navigation("General")
                        .IsRequired();

                    b.Navigation("List")
                        .IsRequired();

                    b.Navigation("Write")
                        .IsRequired();
                });

            modelBuilder.Entity("bitforum.Models.Log.EmailChangeLog", b =>
                {
                    b.HasOne("bitforum.Models.Account.Member", "Member")
                        .WithMany("EmailChangeLog")
                        .HasForeignKey("MemberID")
                        .OnDelete(DeleteBehavior.NoAction)
                        .IsRequired();

                    b.Navigation("Member");
                });

            modelBuilder.Entity("bitforum.Models.Log.EmailLog", b =>
                {
                    b.HasOne("bitforum.Models.Account.Member", "Member")
                        .WithMany("EmailLog")
                        .HasForeignKey("MemberID")
                        .OnDelete(DeleteBehavior.SetNull);

                    b.Navigation("Member");
                });

            modelBuilder.Entity("bitforum.Models.Log.LoginLog", b =>
                {
                    b.HasOne("bitforum.Models.Account.Member", "Member")
                        .WithMany("LoginLog")
                        .HasForeignKey("MemberID")
                        .OnDelete(DeleteBehavior.SetNull);

                    b.Navigation("Member");
                });

            modelBuilder.Entity("bitforum.Models.Log.NameChangeLog", b =>
                {
                    b.HasOne("bitforum.Models.Account.Member", "Member")
                        .WithMany("NameChangeLog")
                        .HasForeignKey("MemberID")
                        .OnDelete(DeleteBehavior.NoAction)
                        .IsRequired();

                    b.Navigation("Member");
                });

            modelBuilder.Entity("bitforum.Models.Page.Banner.BannerItem", b =>
                {
                    b.HasOne("bitforum.Models.Page.Banner.BannerPosition", "BannerPosition")
                        .WithMany("BannerItem")
                        .HasForeignKey("PositionID")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("BannerPosition");
                });

            modelBuilder.Entity("bitforum.Models.Page.Faq.FaqItem", b =>
                {
                    b.HasOne("bitforum.Models.Page.Faq.FaqCategory", "FaqCategory")
                        .WithMany("FaqItem")
                        .HasForeignKey("CategoryID")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();

                    b.Navigation("FaqCategory");
                });

            modelBuilder.Entity("bitforum.Models.Account.Member", b =>
                {
                    b.Navigation("EmailChangeLog");

                    b.Navigation("EmailLog");

                    b.Navigation("LoginLog");

                    b.Navigation("MemberApprove");

                    b.Navigation("NameChangeLog");
                });

            modelBuilder.Entity("bitforum.Models.BBS.Board", b =>
                {
                    b.Navigation("Post");
                });

            modelBuilder.Entity("bitforum.Models.BBS.BoardGroup", b =>
                {
                    b.Navigation("Board");
                });

            modelBuilder.Entity("bitforum.Models.BBS.Comment", b =>
                {
                    b.Navigation("Reply");
                });

            modelBuilder.Entity("bitforum.Models.BBS.Post", b =>
                {
                    b.Navigation("Comment");
                });

            modelBuilder.Entity("bitforum.Models.Page.Banner.BannerPosition", b =>
                {
                    b.Navigation("BannerItem");
                });

            modelBuilder.Entity("bitforum.Models.Page.Faq.FaqCategory", b =>
                {
                    b.Navigation("FaqItem");
                });
#pragma warning restore 612, 618
        }
    }
}
