[CommunityHeros]ADO.net EntityFramework

Preview:

DESCRIPTION

asd

Citation preview

ADO.NET Entity Framework 소개

한용희Microsoft Visual C# MVP

http://blog.naver.com/woom333

2008.2.16

현실적인 문제들

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

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

데이터 처리에 관한 해결책

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

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

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

개념적 모델 (Conceptual Model)

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

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

두산 백과 사전

개념적 모델링의 중요성

물리적 모델 (Physical model)

논리적 모델 (Logical model)

개념적 모델 (Conceptual model)

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

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

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

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

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

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

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

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

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

eSQL, Object Services, LINQ to Entities

Demo

Entity Framework 장점

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

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

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

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”

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

상속

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

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

유연한 매핑

Demo

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 를 통해 배포 예정

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

• 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

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

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

감사합니다