程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase教程 >> EF實體框架初了解

EF實體框架初了解

編輯:SyBase教程

EF實體框架初了解


  什麼是實體(Entity),相信大家都認識過了,就是我們重構機房收費系統的時候,那個在三層之間負責傳數據的層嘛。在一個作用域內數據類型是如何定義的。

一、實體框架(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,可以使用實體框架設計器來設計新模型,然後從模型生成數據庫架構。模型存儲在一個 EDMX 文件(擴展名為 .edmx)中,可在實體框架設計器中查看和編輯。應用程序中用於交互的類是自動從 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 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 Blogs { get; set; }
            public DbSet Posts { get; set; }
        }
    }
}


 

六、總結

  實體框架將數據庫對象抽象化,方便了我們對數據庫修改等操作。讓數據的訪問工作變的簡單。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved