개발 이야기/ORM2012. 4. 15. 12:29

Entity Framework Context

이전 세션에서 Database에서 개체들을 Entity화하는 부분을 확인해보았습니다이번 시간은 이 엔티티를 가지고 실제 컨트롤에 데이터를 바인딩하는 부분을 살펴보겠습니다.

 

실전따라해보기!!

EDM 항목을 하나 추가해주세요.

01.JPG

[그림5-1] EDM 항목 추가

 

데이터베이스를 연결해주세요저는 기본인 Northwind를 연결하겠습니다.

02.JPG

[그림5-2] EDM Database연결

 

모델 네이스페이스를 지정해주시고요.

03.JPG

[그림5-3] Database 개체 선택

 

EDM이 자동생성 된것을 확인하셨죠?! 모델 브라우저에서 다음과 같이 NorthwindEntities가 생성된 것이 보입니다. EntityContainer EntityFramework ObjectContext 클래스를 상속합니다. ObjectContext은 정의된 EDM 엔티티 형식의 객체들의 데이터를 관리하는 기본 클래스입니다.^^

04.JPG

[그림5-4] 모델 브라우저

 

데이터를 뿌려줄 UI를 간단히 구성해보겠습니다버튼과 리트스박스로 구성되었으며 버튼을 클릭하면 리스트박스에 데이터를 바인딩하려합니다.

05.JPG

[그림5-5] UI 구성

 

버튼 클릭 시 소스 코드는 다음과 같습니다앞에서 언급한 LINQ Object를 질의하시면 됩니다. NorthwindEntities Customers엔티티를 가져와서 실제 데이터베이스 데이터를 바인딩하겠습니다조건에 맞는 데이터를 가져와야한다면 var customer = context.Customers; è 에서 조건 질의 하면된다.

 

        private void button1_Click(object sender, EventArgs e)

        {

            using (var context = new NorthwindEntities())

            {

                var customer = context.Customers;

                foreach (var item in customer)

                {

                    listBox1.Items.Add(string.Format("{0} | {1}", item.CompanyName, item.City));

                }

            }

        }

 

 

프로그램을 실행해서 버튼을 클릭해보겠습니다다음과 같이 목록이 주루륵조회되는 것을 보실 수 있습니다.

07.JPG

[그림5-6] UI Data Bind

 

디버깅으로 Customers를 확인해보면 ObjectSet객체가 반환되는 것을 확인 할 수 있습니다이렇게 EDM에서 엔티티들을ObjectSet으로 구성하는 것을 확인 하였습니다.

06.JPG

[그림5-7] ObjectSet

 

EDM 코드를 한번 더 살펴보죠. ObjectSet으로 다음과 같이 반환을 하고 있습니다.

 

        /// <summary>

        /// No Metadata Documentation available.

        /// </summary>

        public ObjectSet<Customers> Customers

        {

            get

            {

                if ((_Customers == null))

                {

                    _Customers = base.CreateObjectSet<Customers>("Customers");

                }

                return _Customers;

            }

        }

        private ObjectSet<Customers> _Customers;

   

 

 

추가 팁!

SQL Server에서는 논리적으로 다음과 같은 순서로 질의합니다.

(8) SELECT (9) TOP

(1) FROM

(3) JOIN

(2) ON

(4) WHERE

(5) GROUP BY

(6) WITH

(7) HAVING

(1) ORDER BY

 

이번 세션은 이렇게 마무리 짓겠습니다.^^ 다음 세션은 이번 세션의 확장으로 실제 Entity들의 작업에 대해서 알아보겠습니다행복한 하루 보내세요!

소스파일 : EF4.05.zip


sqler에 아티클 작성 했던것을 공유합니다.

출처 : http://www.sqler.com/396913


Posted by 사나에