entity framework實戰
TRANSCRIPT
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