Entity Framework Context
이전 세션에서 Database에서 개체들을 Entity화하는 부분을 확인해보았습니다. 이번 시간은 이 엔티티를 가지고 실제 컨트롤에 데이터를 바인딩하는 부분을 살펴보겠습니다.
실전! 따라해보기!!
EDM 항목을 하나 추가해주세요.
[그림5-1] EDM 항목 추가
데이터베이스를 연결해주세요. 저는 기본인 Northwind를 연결하겠습니다.
[그림5-2] EDM Database연결
모델 네이스페이스를 지정해주시고요.
[그림5-3] Database 개체 선택
EDM이 자동생성 된것을 확인하셨죠?! 모델 브라우저에서 다음과 같이 NorthwindEntities가 생성된 것이 보입니다. EntityContainer는 EntityFramework의 ObjectContext 클래스를 상속합니다. ObjectContext은 정의된 EDM 엔티티 형식의 객체들의 데이터를 관리하는 기본 클래스입니다.^^
[그림5-4] 모델 브라우저
데이터를 뿌려줄 UI를 간단히 구성해보겠습니다. 버튼과 리트스박스로 구성되었으며 버튼을 클릭하면 리스트박스에 데이터를 바인딩하려합니다.
[그림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)); } } }
|
프로그램을 실행해서 버튼을 클릭해보겠습니다. 다음과 같이 목록이 주루륵~ 조회되는 것을 보실 수 있습니다.
[그림5-6] UI Data Bind
디버깅으로 Customers를 확인해보면 ObjectSet객체가 반환되는 것을 확인 할 수 있습니다. 이렇게 EDM에서 엔티티들을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