달력

11

« 2009/11 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  •  
  •  
  •  
  •  
  •  

모델 생성하기
데이터베이스 모델을 생성하고 표현하기 위해 클래스 집합이 필요합니다. 마이크로소프트 엔티티 프레임워크의 이점은 데이터베이스 모델을 자동으로 생성해주는 클래스들을 가지고 있습니다.


ASP.NET MVC 프레임워크는 마이크로소프트 엔티티 프레임워크를 지원하지 않습니다. LINQ, Subsonic 그리고 NHibernate가 포함된 Object Relational Mapping(OR/M)를 활용하면 데이터베이스 모델 클래스들을 생성할 수 있습니다.



Entity Data Model Wizard
를 시작하기 위해 다음의 절차를 따릅니다.

1.      솔루션 탐색기내의 모델 폴더를 우클릭하고 메뉴 옵션에서 Add, New Item을 선택합니다.

2.      Data 카테고리를 선택하고 ADO.NET Entity Data Model 템플릿을 선택합니다.



3.      MovieDBModel.edmx라는 이름의 데이터 모델을 당신에 주고 Add 버튼을 클릭합니다.

Add 버튼을 클릭한 후에 Entity Data Model Wizard가 그림 6처럼 나타난다. Wizard를 완벽하게 사용하기 위해서 다음 스텝으로 진행합니다. 

Choose Model Contents 스텝에서 Generate from database 옵션을 선택합니다.
Choose Your Data Connection 스텝에서 MovieDB.mdf 데이터 연결을 사용합니다.
그리고 연결을 설정할 때 MoviesDBEntities로 이름으로 만들고 Next 버튼을 클릭합니다.
Choose Your Database Objects 스텝에서 테이블 노드를 확장하고 Movies 테이블을 선택합니다.
MovieApp.Models
라는 네임스페이스를 입력하고 Finish 버튼을 클릭한다.


 


Entity Data Model Wizard 완료한 후에 Entity Data Model 디자이너를 오픈하면 해당 디자이너는 그림 7과 같은 Movies 데이터베이스 테이블을 보여줍니다.


(그림 07: Entity Data Model Designer)

계속 작업을 이어가기 위해선 그 전에 한 가지를 변경해야 합니다. Entity Data Wizard Movies 데이터베이스 테이블을 표현하기 위해 Movies라는 이름의 모델 클래스를 추가해야 합니다. 왜냐하면 우리는 개별적인 movie를 표현하하는데 Movies 클래스 라는 것을 사용할 것이 때문입니다. 따라서 우리는 Movies대신에 movie 클래스 라는 이름으로 수정할 필요가 있습니다.

 

디자이너에서 클래스 이름을 더블-클릭하고 Movies라는 이름을 Movie로 이름을 변경합니다. 변경한 후에 Movie 클래스 추가를 위해 Save 버튼을 클릭합니다.

ASP.NET MVC 컨트롤러 생성하기

다음은 ASP.NET MVC 컨트롤러를 생성하는 절차입니다. 하나의 컨트롤러는 ASP.NET 애플리케이션과 사용자 사이에서 어떻게 인터렉션하며 하는가를 알아보겠습니다.

우선 다음의 절차를 따릅니다.

1.     솔루션 탐색기에서 컨트롤러 폴더를 오른쪽 클릭하고 메뉴옵션에서 Add, Controller를 선택합니다.

2.     Add Controller 다이얼로그에 HomeController라고 입력하고 Add action methods for Create, Update, and Details scenarios를 체크합니다.

3.     프로젝트에 새로운 컨트롤러를 추가하기 위해 Add를 클릭한다.


 
(그림 08: 새로운 ASP.NET MVC 컨트롤러를 추가)


아래는 자동으로 생성된 HomeController.cs의 코드 입니다.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;

namespace MoveApp.Controllers
{
    public class HomeController : Controller
    {
        //
        // GET: /Home/

        public ActionResult Index()
        {
            return View();
        }

        //
        // GET: /Home/Details/5
        public ActionResult Details(int id)
        {
            return View();
        }

        //
        // GET: /Home/Create

        public ActionResult Create()
        {
            return View();
        }

        //
        // POST: /Home/Create
        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Create(FormCollection collection)
        {
            try
            {
                // TODO: Add insert logic here

                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

        //
        // GET: /Home/Edit/5
        public ActionResult Edit(int id)
        {
            return View();
        }

        //
        // POST: /Home/Edit/5

        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Edit(int id, FormCollection collection)
        {
            try
            {
                // TODO: Add update logic here 
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
    }
}


다음에 이어서...
저작자 표시 비영리 변경 금지
Posted by -세티-