티스토리 뷰

반응형

이젠 나머지 테이블들 만들고 본격 적으로 들어가야 겠다. 다른 테이블들 만드는 것은 어렵지 앙았는데.. 한가지 문제 해결과 한가지 문제가 생겼다..


1. 나머지 테이블들
(작업 하면서 테이블 명세서를 약간씩 수정했는데..테이블 명세서만 필요하지는 않을 것 같아..첨부파일로 올리지는 앙는다)

BOARD_REPLY.cs

using System;
using System.ComponentModel.DataAnnotations;

namespace SL5_BOARD.Web.Model
{
    public class BOARD_REPLY
    {
        [Key]
        public int BOARD_REPLY_IDX { get; set; }
        public string REPLY_CONTENT { get; set; }
        public DateTime REG_DT { get; set; }
        public int REG_IDX { get; set; }
        public DateTime? UPT_DT { get; set; }
        public int? UPT_IDX { get; set; }

        public virtual BOARD_LIST BoardList { get; set; }
        public int BOARD_LIST_IDX { get; set; }
    }
}


BOARD_ATTACH.cs

using System;
using System.ComponentModel.DataAnnotations;

namespace SL5_BOARD.Web.Model
{
    public class BOARD_ATTACH
    {
        [Key]
        public int BOARD_ATTACH_IDX { get; set; }
        public string FILE_NAME { get; set; }
        public string FILE_EXT { get; set; }
        public int FILE_SIZE { get; set; }
        public DateTime REG_DT { get; set; }
        public int REG_IDX { get; set; }
        public DateTime? UPT_DT { get; set; }
        public int? UPT_IDX { get; set; }

        public virtual BOARD_LIST BoardList { get; set; }
        public int BOARD_LIST_IDX { get; set; }

        public BOARD_ATTACH()
        {
            FILE_SIZE = 0;
        }
    }
}


MST_MEMBER.cs

using System;
using System.ComponentModel.DataAnnotations;

namespace SL5_BOARD.Web.Model
{
    public class MST_MEMBER
    {
        [Key]
        public int MST_MEMBER_IDX { get; set; }
        public string EMAIL { get; set; }
        public string PASSWORD { get; set; }
        public string MEMBER_NAME { get; set; }
        public string NICK_NAME { get; set; }
        public bool EMAIL_RECEIVE { get; set; }
        public string DESCRIPTION { get; set; }
        public DateTime LAST_LOGIN_DT { get; set; }
        public string JOB { get; set; }
        public string HOBBY { get; set; }
        public string INTEREST { get; set; }
        public int MEMBER_SCORE { get; set; }
        public string MEMBER_GRADE { get; set; }
        public string ETC { get; set; }
        public int STATUS { get; set; }
        public DateTime REG_DT { get; set; }
        public int REG_IDX { get; set; }
        public DateTime? UPT_DT { get; set; }
        public int? UPT_IDX { get; set; }

        public MST_MEMBER()
        {
            EMAIL_RECEIVE = true;
            LAST_LOGIN_DT = DateTime.Parse("2000-01-01");
            MEMBER_SCORE = 0;
            STATUS = 0;
        }
    }
}


SL5_BOARD_DBCONTEXT.cs 전체 소스


using System.Data.Entity;
using System.Web;

namespace SL5_BOARD.Web.Model
{
    public class SL5_BOARD_DBCONTEXT : DbContext
    {
        public SL5_BOARD_DBCONTEXT()
            : base("SL5_BOARD")
        {
            if (HttpContext.Current == null)
            {
                //맨뒤에 새로 추가된 부분이 데이터베이스가 변경되었을 때 db를 새로 만든다..라는..머 그런 내용
                Database.SetInitializer<SL5_BOARD_DBCONTEXT>(new SL5_BOARD_DBCONTEXTInitializer());
            }
        }

        public DbSet<BOARD_MAIN> BOARD_MAINS { get; set; }
        public DbSet<BOARD_LIST> BOARD_LISTS { get; set; }
        public DbSet<BOARD_REPLY> BOARD_REPLYS { get; set; }
        public DbSet<BOARD_ATTACH> BOARD_ATTACHS { get; set; }
        public DbSet<MST_MEMBER> MST_MEMBERS { get; set; }
    }

    //내부에는 Seed라고 해서 새로운 DB가 만들어지면 내용을 넣도록 되어있는데..그런건 뺐음
    //이곳이 실행되면서 db를 새로 만들어줌..(그러나..100% 잘 동작되는 것은 아님)
    public class SL5_BOARD_DBCONTEXTInitializer : DropCreateDatabaseIfModelChanges<SL5_BOARD_DBCONTEXT>
    {
    }
}

2. 한가지 문제 해결
위에 내용이 있는데..데이터베이스가 변경되었을 때 수동으로 삭제하고 다시 만들어야 했던 부분이 해결되었다. 음..사용해 본 봐에 의하면 한 90%정도는 지워지고 다시 잘 만들어지는데 10%정도는 앙대는 경우도 있으니 그때는 삭제하고 실행하면 다시 만들어 준다..하하하..(Compact DB이니 삭제하고 만들고 삭제하고 만들고 하는 부분에 대해 이해를 해보도록 하자;;)

3. 한가지 문제 발생
각 테이블에는 REG_ID, UPT_ID라는 필드가 존재하는데..이것이..MST_MEMBER 테이블과 연결이 되어야 하는 필드들이다. 그런데 동일한 테이블들끼리 1:N 연결관계를 2개를 만들어 줘야하는데..그게 쉽지 않다...그래서, 찾아보다가.. 고수들의 도움을 받기위해 MS 포럼에 질문을 올려 놓은 상태이니 좀 기다리면..답변이 달리지 앙을까 한다..(끝까지 앙달리면 다른 방법을..쿨럭)

4. 이번은 여기서
마무리 하고 다음은 SL5_BOARD 프로젝트의 전체 적인 설계 방향을 잡아보도록 하자.

반응형
댓글