EFEntity Framework初瞭解,EFEntity Framework
什麼是實體(Entity),相信大家都認識過了,就是我們重構機房收費系統的時候,那個在三層之間負責傳資料的層嘛。在一個範圍內資料類型是如何定義的。
一、Entity Framework(EntityFramework)是什麼呢?
Entity Framework是ADO.NET 中的一套支援開發面向資料的軟體應用程式的技術,是微軟的一個ORM架構。EF是開發可以採用特定於域的對象和屬性的形式使用資料,不用開路儲存資料的技術資料庫表和列。形成了更高一個層面上的抽象,並且能夠以相對傳統應用程式更少的代碼。
二、可能你又會問,這個ORM架構是什麼東西?
廣義上,ORM指的是物件導向的物件模型和關係型資料庫的資料結構之間的相互轉換。狹義上,ORM可以被認為是,基於關係型資料庫的資料存放區,實現一個虛擬物件導向的資料提供者。理想情況下,基於這樣一個物件導向的介面,持久化一個OO對象應該不需要要瞭解任何關係型資料庫儲存資料的實現細節。表實體和表的相互轉化。將實體的變化映射到表中。
[三個字母的含義]
三、EF工作原理?
利用了抽象化資料結構的方式,將每一個資料庫物件都轉換成應用程式物件,而資料欄位都變成了屬性,關係則變成了結合屬性,讓ER模型完全變成資料庫物件模型。這樣就可以讓程式員用最熟悉的語言去操作這些對象,事實上是在操作資料庫的變化。在抽象化的結構之下,再結合三層架構讓資料訪問輕鬆的實現。
四、有常見兩種方法來定義資料模型:
1、CodeFirst
使用Code First 用代碼來定義模型,然後產生資料庫。
CodeFirst是EntityFramework的一種技術手段,因為傳統編程方式都是先建立資料庫,然後根據資料庫模型為應用程式建模,再進行開發;CodeFirst從字面上理解就是代碼先行,先在程式中建立要映射到資料庫的實體結構,然後EntityFramework可以根據實體結構產生所對應的資料庫。
2、ModelFirst
使用Model First 用方框和線條來定義模型,然後產生資料庫。
通過 Model First,可以使用Entity Framework設計器來設計新模型,然後從模型產生資料庫結構描述。模型儲存在一個 EDMX 檔案(副檔名為 .edmx)中,可在Entity Framework設計器中查看和編輯。應用程式中用於互動的類是自動從 EDMX 檔案產生的。
五、舉例ModelFirst
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 List<Post> Posts { 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<Blog> Blogs { get; set; } public DbSet<Post> Posts { get; set; } } }}
六、總結
Entity Framework將資料庫物件抽象化,方便了我們對資料庫修改等操作。讓資料的訪問工作變的簡單。