先從ORM說起吧,很多年前,由於.NET的開源組件不像現在這樣發達,更別說一個開源的ORM框架,出於項目需要,以及當時OOP興起(總不至於,在項目裡面全是SQL語句),就自己開始寫ORM框架。要開發ORM框架首先要了解ORM概念。
ORM 對象關系映射,O(Object) 對象,在項目中就是實體,更加精確的來說就是數據Model,也可以說持久化類。R(Relation) 關系數據,M (Mapping)映射,將對象映射到關系數據,將關系數據映射到對象的過程。
更加直觀理解就是,ORM 就是以OOP思想,產生增刪改查SQL語句
了解ORM概念之後,你會發現,其實ORM框架,主要難點在M映射部分
O 創建簡單的實體對象就可以
R 關系數據庫中數據表
M 難點要如何把實體對象與關系數據庫具體數據表關聯起來,然後產生相應數據庫操作SQL?
當時,幸好.NET 有兩樣技術比較流行
1. 特性
2. 反射
當時主要利用 特性 來標識 實體 映射 具體數據庫 TableName ,屬性 對應的 具體表的ColumnName,還有主外建,是否自增量,默認值 等等,都用特性來標識。
將實體,屬性上的特性反射後,然後根據增刪改查操作方法,就可以產生對應的SQL語句。
至此一個簡單的ORM框架,就有了。
這幾年,.NET 技術有了飛速發展,有很多寫得不錯的開源組件如雨後春筍般湧現,也包含ORM框架
Hibernate , Drapper,EntityFramework 等等
EntityFramework 版本歷史簡介
EF版本 .net framework和IDE版本 主要功能 EF(or EF3.5) Visual Studio 2008 SP1 (.NET 3.5 SP1) 基本的O/R映射支持,使用DB First開發模式 EF 4 Visual Studio 2010 (.NET 4.0) 支持POCO實體Tooling consolidation provides a consistent way to create a new EF model. This feature extends the ADO.NET Entity Data Model wizard to support creating Code First models, including reverse engineering from an existing database. These features were previously available in Beta quality in the EF Power Tools.
Handling of transaction commit failures provides theCommitFailureHandler which makes use of the newly introduced ability to intercept transaction operations. The CommitFailureHandler allows automatic recovery from connection failures whilst committing a transaction
IndexAttributeallows indexes to be specified by placing an [Index] attribute on a property (or properties) in your Code First model. Code First will then create a corresponding index in the database
The public mapping API provides access to the information EF has on how properties and types are mapped to columns and tables in the database. In past releases this API was internal
EntityFramework 剛剛出來時,反響就比較不錯。那時我有接觸一些,不多,也不知道當時為什麼這麼好的東西,沒有深耕一下。
2014 年,去了一家創業公司,做技術主管,做架構開發,當時定的 ASP.NET MVC 5&Entity Framework 6做開發框架。
再次了解到EntityFramework的強大。
Entity Framework 有三種實作方式
1. DataBase First 數據庫先行
2. Model First 模型先行
3. Code First 代碼先行
前兩種就是拖控件,按照指引一步步,就可以完成Entity Framework 實現。
Code First 就是代碼純手工打造。
Entity Framework 介紹暫時介紹完成,我們這個系列實作Entity Framework 方式是Code First,因為Code First 才能更加深入了解Entity Framework 工作原理。
我們這個系列采用是 Entity Framework 6.1 版本,最後這幾個版本區別不大。
CodePlex : http://entityframework.codeplex.com/
GitHub : https://github.com/aspnet/EntityFramework/
開發指南:https://docs.efproject.net/en/latest/
敬請期待
第二篇:Entity Framework CodeFirst & Model 映射