什麼是實體(Entity),相信大家都認識過了,就是我們重構機房收費系統的時候,那個在三層之間負責傳數據的層嘛。在一個作用域內數據類型是如何定義的。
Entity Framework是ADO.NET 中的一套支持開發面向數據的軟件應用程序的技術,是微軟的一個ORM框架。EF是開發可以采用特定於域的對象和屬性的形式使用數據,不用開路存儲數據的技術數據庫表和列。形成了更高一個層面上的抽象,並且能夠以相對傳統應用程序更少的代碼。
廣義上,ORM指的是面向對象的對象模型和關系型數據庫的數據結構之間的相互轉換。狹義上,ORM可以被認為是,基於關系型數據庫的數據存儲,實現一個虛擬的面向對象的數據訪問接口。理想情況下,基於這樣一個面向對象的接口,持久化一個OO對象應該不需要要了解任何關系型數據庫存儲數據的實現細節。表實體和表的相互轉化。將實體的變化映射到表中。
[三個字母的含義]
利用了抽象化數據結構的方式,將每一個數據庫對象都轉換成應用程序對象,而數據字段都變成了屬性,關系則變成了結合屬性,讓ER模型完全變成數據庫對象模型。這樣就可以讓程序員用最熟悉的語言去操作這些對象,事實上是在操作數據庫的變化。在抽象化的結構之下,再結合三層框架讓數據訪問輕松的實現。
1、CodeFirst
使用Code First 用代碼來定義模型,然後生成數據庫。
CodeFirst是EntityFramework的一種技術手段,因為傳統編程方式都是先建立數據庫,然後根據數據庫模型為應用程序建模,再進行開發;CodeFirst從字面上理解就是代碼先行,先在程序中建立要映射到數據庫的實體結構,然後EntityFramework可以根據實體結構生成所對應的數據庫。
2、ModelFirst
使用Model First 用方框和線條來定義模型,然後生成數據庫。
通過 Model First,可以使用實體框架設計器來設計新模型,然後從模型生成數據庫架構。模型存儲在一個 EDMX 文件(擴展名為 .edmx)中,可在實體框架設計器中查看和編輯。應用程序中用於交互的類是自動從 EDMX 文件生成的。
1、創建ADO.NET實體數據模型
2、添加實體
3、根據模型生成數據庫
4、測試數據庫連接
5、數據庫生成,會生成對應的數據庫腳本語言。
舉例CodeFirst:
codefirst需要用到數據庫訪問的上下文DBContext對象。結合Linq進行數據的查詢。
namespace CodeFirstDatabaseSample { class Program { static void Main(string[] args) { using (var db = new BlogContext()) { Console.Write("Enter a name for a new blog:"); var name = Console.ReadLine(); var blog = new Blog { Name = name }; db.Blogs.Add(blog); db.SaveChanges(); var query = from b in db.Blogs orderby b.Name select b; foreach (var item in query) { Console.WriteLine(item.Name); } } } public class Blog { public int BlogId { get; set; } public string Name { get; set; } public virtual ListPosts { get; set; } } public class Post { public int PostId { get; set; } public string Title { get; set; } public string Content { get; set; } public int BlogId { get; set; } public virtual Blog Blog { get; set; } } public class BlogContext : DbContext { public DbSet Blogs { get; set; } public DbSet Posts { get; set; } } } }
實體框架將數據庫對象抽象化,方便了我們對數據庫修改等操作。讓數據的訪問工作變的簡單。