17
ADO.NET Entity Framework 소소 소소소 Microsoft Visual C# MVP http://blog.naver.com/woom333 2008.2.16

[CommunityHeros]ADO.net EntityFramework

Embed Size (px)

DESCRIPTION

asd

Citation preview

Page 1: [CommunityHeros]ADO.net EntityFramework

ADO.NET Entity Framework 소개

한용희Microsoft Visual C# MVP

http://blog.naver.com/woom333

2008.2.16

Page 2: [CommunityHeros]ADO.net EntityFramework

현실적인 문제들

• 데이터베이스는 검색과 저장하는데 최적화• 애플리케이션은 기능 구현에 초점• DBA 는 데이터에 관심• 개발자는 코드에 관심

DAL ( Data Access Layer ) 를 통한 추상화

Page 3: [CommunityHeros]ADO.net EntityFramework

데이터 처리에 관한 해결책

• 성능문제와 정규화로 인한 데이터베이스 변화– Northwind Adventureworks

• 물리적 모델의 변화 애플리케이션 코드에 영향

• 계층적 추상화 ( Level of abstraction )• 엔터티 데이터 모델 (Entity Data Model, EDM)

개념적 모델 (Conceptual Model)

인간이 생각하는 개념 또는 정보의 세계에서는 의미있는 정보의 단위 .

실세계에 존재하는 유형· 무형의 정보가 모인 것을 애트리뷰트(attribute) 라고 하며 , 연관된 애트리뷰트가 모인 것을 엔티티 (실체라고 번역 ) 라 하는데 , 구체적으로 인간이 생각하는 개념 또는 정보의 세계에서는 의미있는 하나의 정보 단위를 말한다 .

두산 백과 사전

Page 4: [CommunityHeros]ADO.net EntityFramework

개념적 모델링의 중요성

물리적 모델 (Physical model)

논리적 모델 (Logical model)

개념적 모델 (Conceptual model)

엔터티 (Entity) 와 관계 (relation) 로 표현

엔터티에 대한 정규화 , 관계를 외래키로 표현

실제 테이블에 대한 파티셔닝이나 인덱싱 표현

간과 되기 쉬운 부분애플리케이션 , 오브젝트 자체에 더 집중하자

Page 5: [CommunityHeros]ADO.net EntityFramework

ADO.NET Data ProvidertADO.NET Data Provider

Entity Framework Over-view

ADO.NET Data Provider

Object Services

LINQ to Entities

EDMMetaData

Store Schema

ConceptualSchema

ObjectMetadata

O-CMap

C-SMap

CQT

DataReader

DataReader

IEnumerable<T>

ESQL

NativeSQL

CQT

ESQL

LINQ

EntityClient Data Provider

Client View Engine CQT

Page 6: [CommunityHeros]ADO.net EntityFramework

eSQL, Object Services, LINQ to Entities 비교• LINQ to Entities

– 강력한 타입 지원– 컴파일 타임에 구문 체크– 인텔리센스 기능

• Object Services– 저장 기능– 변경 추적 기능– 객체로 리턴– eSQL 또는 LINQ to Entities 쿼리 구문 모두 가능

• eSQL– 동적 /AdHoc 쿼리– 저장 기능

Page 7: [CommunityHeros]ADO.net EntityFramework

eSQL, Object Services, LINQ to Entities

Demo

Page 8: [CommunityHeros]ADO.net EntityFramework

Entity Framework 장점

• 풍부한 애플리케이션 모델링– 상속 지원– 다대다 관계 지원– Complex 타입 지원

• 풍부한 매핑 지원– 엔티디가 여러 테이블에 분산 될 수 있다 .– 다양한 상속 옵션 (TPH, TPT, TPC)– 저장 프로시저 / TVF(Table Valued Functions) 지원

• 애플리케이션 모델과 저장 스키마간의 디커플링– 한 저장 스키마에 대한 다중 모델 가능– 하나의 모델이 다중 저장 스키마 가능– 모델과 저장 스키마 간의 독립적인 수정 가능

Page 9: [CommunityHeros]ADO.net EntityFramework

Table Per Hierarchy(TPH)

People

ID(PK)

DateCreated

Birthday

FirstName

LastName

LoginName

Password

Title

DateHired

ObjectType

Person

ID(PK)

DateCreated

Birthday

FirstName

LastName

User:Person

LoginName

Password

Employee:User

Title

DateHired

Database Model Entity ModelMapping

ObjectType=“Person”

ObjectType=“User”

ObjectType=“Employee”

Page 10: [CommunityHeros]ADO.net EntityFramework

Table Per Type (TPT)

People

ID(PK)

DateCreated

Birthday

FirstName

LastName

Person

ID(PK)

DateCreated

Birthday

FirstName

LastName

User:Person

LoginName

Password

Employee:User

Title

DateHired

Database Model Entity ModelMapping

Users

PersonID(PK)

LoginName

Password

Employees

PersonID(PK)

Title

DateHired

상속

Page 11: [CommunityHeros]ADO.net EntityFramework

Table Per Class(TPC)People

ID(PK)

DateCreated

Birthday

FirstName

LastName

Person

ID(PK)

DateCreated

Birthday

FirstName

LastName

User:Person

LoginName

Password

Employee:User

Title

DateHired

Database Model Entity ModelMapping

People

PersonID(PK)

DateCreated

Birthday

FirstName

LastName

LoginName

Password

People

PersonID(PK)

DateCreated

Birthday

FirstName

LastName

LoginName

Password

Title

DateHired

Page 12: [CommunityHeros]ADO.net EntityFramework

Entity Splitting

Person

ID(PK)

DateCreated

Birthday

FirstName

LastName

User

ID(PK)

DateCreated

Birthday

FirstName

LastName

LoginName

Password

Database Model Entity ModelMapping

Users

PersonID(PK)

LoginName

Password

Page 13: [CommunityHeros]ADO.net EntityFramework

유연한 매핑

Demo

Page 14: [CommunityHeros]ADO.net EntityFramework

LINQ to SQL VS. LINQ to Entities• LINQ to SQL – 강력한 타입형 데이터베이스 (Strongly Typed

Database)– 빠른 개발을 해야 할때– 속도가 중요할 때 – Microsoft SQL Server 제품군에 대한 직접 매핑– Microsoft Visual Studio 2008 에 포함

• LINQ to Entities – 기존에 있는 스키마에 대한 유연한 매핑– 엔터프라이즈급에서 사용– Microsoft SQL Server 와 다른 DB 에 대한 유연한 매핑– Microsoft Visual Studio 2008 update 를 통해 배포 예정

Page 15: [CommunityHeros]ADO.net EntityFramework

다른 데이터베이스 프로바이더 제공 내역

• Core Lab - Providing connectivity to Oracle, MySQL, PostgreSQL and SQLite databases

• IBM - Providing connectivity to both IBM DB2 data server and Informix Dy-namic Server (IDS) databases

• MySQL AB - Providing connectivity to MySQL databases• Npgsql - Providing connectivity to PostgreSQL database versions 7.3+ and

8.x• OpenLink Software - Providing connectivity to Oracle, Informix, Ingres,

Sybase, MySQL, PostgreSQL, DB2, Progress and Microsoft SQL Server data-bases, and any data source accessible via OpenLink ODBC or JDBC bridge drivers

• Phoenix Software International - Providing connectivity to SQLite databases• Sybase - Providing connectivity to SQL Anywhere databases• VistaDB Software - Providing connectivity to VistaDB databases• DataDirect Technologies - Providing connectivity to multiple data stores in-

cluding Oracle, Sybase, Microsoft SQL Server and DB2 via DataDirect Con-nect® for ADO.NET

• Firebird - Providing connectivity to Firebird databases

Page 16: [CommunityHeros]ADO.net EntityFramework

http://blog.naver.com/woom333PresentationDemo Sources

http://blog.naver.com/woom333/60047172335C#개발자를 위한 VS 2008 동영상 모음

Page 17: [CommunityHeros]ADO.net EntityFramework

감사합니다