Entity Framework實戰

113
Entity Framework 實實

Transcript of Entity Framework實戰

Entity Framework

Entity Framework

ORM/OAMEntity FrameworkEFCRUDEF6Repository/Unit Of Work

ORM

ORMSQLSQL,

ORMSQL

OAM?ORMRRelational,,OAMA: Any!

SQLNoSQLSQLNoSQL

Entity FrameworkEntity FrameworkORM,Entity FrameworkEFEntity FrameworkADO.Net 2.0 Provider

EF

EF

EFLinq/E-SQL

(O-)(C-)(S-)CSDLMSLSSDLC-SO-C

EntityClientADO.NetE-SQLLinQIEnumerableE-SQLCCTDataReaderEntityConnectionEntityCommandExecuteReaderObjectContextObjectQueryEntityConnectionEntityCommandExecuteReaderADO.Net 2.0E-SQLCCTDataReader

CSDL;MSLSSDL;

(Client View Engine)MSL/(Parser+Converter)

(Object Service)(ObjectStateManager)ESQL/Linq(CCT)EntityClient

EF(Existing Db)

DBDBModel FirstDBPOCOCode First(DB)DBMigrationDBDatabase FirstPOCOCode First(DB)POCO

DataBase First(1)

DataBase First(2)

DataBase First(3)

DataBase First(4)

DataBase First(5)

(Entity)(Complexity Type)(Enum)(Relation)(Function)(Containter)

(Entity): ,: ,

//:Use

(Container):

MetaData

MetaData

POCO?

T4(Text Template Transformation Toolkit),

connectionStringsentityFrameworkdefaultConnectionFactoryprovider

App.config

:DefaultConnectionFactory,EFDefaultConnectionFactoryDefaultConnectionFactory,(Code First):

:Provider:InvariantName: ProviderType: Provider

CRUDEntity FrameworkContainer,

Customer

:AddSaveChange

Customer

LinqAPI,Linq

Customer

,Entity Framework,,SaveChange,

Customer

,:Remove;,SaveChange

CRUDPitfullDateTimeSQL Server

DateTime.NetDateTimeDateTime2DateTime,DateTime,Exception

,

SQL Server, SSDLProviderManifestToken

: SQL Server 2005,2005

Container,,

,IsModifedtrue

EF6EF6,,,,

EF6Async/AwaitConnection/

Async/Await

,

:DefaultExcutingStrategy()DefaultSqlExcutionStrategyDbExecutionStrategySqlAcureExecutionStrategry

ADO.NetNonQueryExecutingExecuteNonQueryNonQueryExecutedExecuteNonQueryReaderExecutingExecuteReaderReaderExecutedExecuteReaderScalarExecutingExecuteScalarScalarExecutedExecuteScalar

OAM-Nuget

OAM-Log

OAM-Interceptor

OAM-Interceptor

OAM-NonQueryExecuted

OAM-Interceptor

MongoDb

Entity FrameworkSaveChanges,

/,

/

RepositoryRepository:Repository

Repository,,

GetAllGetByPKPKInsertAddRangeUpdateDeleteDeleteByPKPKRemoveRangeFilterLambdaOrderByLambdaGetWithPagig

Repository

Repository-

Repository-GetAll

GetAll

Repository-GetBy

DbSetFind;,Find,

Repository-Insert/AddRange

Repository-UpdateAttach,

Repository-,,API

RepositoryQuery-Filter/OrderBy

RepositoryQuery-GetWithPaging

Repository,CustomerRepository

-

IRepositoryQueryAPI

Master-DetailMaster-DetailRepository,

UnitOfWork

UnitOfWork:SaveChangesRepositoryRepository

UnitOfWork-

UnitOfWork-

UnitOfWork

Entity FrameworkEntity Framework,Entity FrameworkORM,ORM

ViewEntity FrameworkView,ContextEF Power Tool

View

View,

NgenEF6NgenNgen(Native Image)Native Image:

Native ImageProcess,NgenNative Image,Native Image

Native Image,NgenNative Image,,

NativeImage

Img

;ORM,

,

(X)(O)

,WhereSelect

,;IQueryableAsNotracking

//Attach,/

Native SQLSQL,Native SQLEF6SqlQuerySQL

Eager v.s. Lazy:Explicit Eager LoadingEager LoadingExplicit Lazy LoadingLazy Loading

EagerExplicit Eager LoadingEager Loading: ReferenceExplicit Loading:Reference;ReferenceAPIReference

LazyExplicit Lazy LoadingLazy Loading:ReferenceExplicit Lazy Loading:Entity FrameworkLazy Loading,APILazy Loading

Eager/Explicit Eager Loading

Eager LoadingExplicitEager Loading

LazyExplicit Lazy Loading

Lazy LoadingExplicit Lazy Loading

EagerLazyEagerReference,,LazyReference,Eager,

ProxyEntity FrameworkProxy:Lazy Loading

ProxyPublicsealedabstractpublicprotectedIEntityWithChangeTrackerIEntityWithRelationshipsProxyCreationEnabledtrue

Lazy Loading Proxypublic virtualgetsealed

Change Tracking Proxypublic virtualsealedmany,ICollection

ProxyEFProxy,Lazy Loading()

:TPH(Table Per Hierarchy)TPC(Table Per Class)TPT(Table Per Type)

TPH(Table Per Hierarchy),,

TPC(Table Per Class), (PK)

TPT(Table Per Type),PK