初識Entity Framework CodeFirst(1)


Entity Framework推出已經有一段時間了,CodeFirst是跟着EF4一起推出的一項技術。
以前我也有用EF來快速建立數據持久層,不過采用的是DBFirst,最近打算學習一下CodeFirst的使用,看了不少園子中各位達人的文章,也看了幾集MSDN上的英文視頻教程(視頻的確很不錯的說,推薦大家也去看一下),稍微有一點心得,現在跟各位朋友分享一下。希望各位園子中的朋友不吝賜教,一起學習進步。
我還是第一次寫技術類博客(處女作?),如果寫得不合大家心意的話還望見諒。
 
言歸正傳:
我們這節討論的問題如下:
1、簡單的介紹一下什么是CodeFirst
2、如何簡單快速的部署EF
3、一個EF CodeFirst的簡單應用實例
代碼可以點擊 這里下載

 

1、什么是CodeFirst

什么是CodeFirst,顧名思義,代碼優先,這是相對於以往開發時,先通過業務分析,再建庫建表,最后才對項目進行編碼。CodeFirst就是先寫代碼和數據模型,再讓EF通過數據模型生成DDL代碼,建立數據庫。

 

2、如何配置

首先,我們建立一個項目(我這里建立一個控制台程序)

右鍵點擊解決方案,然后選擇“管理NuGet程序包”

 

這里你會看到很多程序程序包,選擇EntityFramework,點擊安裝。

系統會自動的幫你部署好EF,呵呵,很方便的說。

我們打開配置文件APP.Config看看,代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v11.0" />
      </parameters>
    </defaultConnectionFactory>
  </entityFramework>
</configuration>

多了一些配置信息(從項目建立開始,我一直都沒有動過配置文件),這些信息是EF部署的時候,系統自動幫你添加的,這里我采用的是VS2012自帶的LocalDB,數據庫的實例是mydb,所以,我只需要把“<parameter value="v11.0" />”中的V11.0改為mydb即可(這里無論是V11.0還是mydb都是數據庫實例,不是具體的數據庫名稱,因為數據庫等下是通過EF來自動幫我們生成的)

至此,我們EF CodeFirst就部署完畢啦。體會到了IDE的強大了吧~~

 

3、開始使用EF CodeFirst

這里,首先我建立兩個Model(稍微抄襲一下MSDN上面的教程,實在是想不出建立個什么樣的model好)

Model的代碼如下:

class Blog
    {
        public int BlogID { get; set; }
        public string BlogName { get; set; }
    }
    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; }
    }

再建立一個上下文,這里我們繼承自DbContext(注意喲:這里需要引入程序集“System.Data.Entity”)

    class BlogContext:DbContext
    {
        public DbSet<Blog> Blogs { get; set; }
        public DbSet<Post> Posts { get; set; }
    }

到這里,我們的EF CodeFirst基本上已經寫完了,剩下的就是在program里面寫一下調用的代碼。

class Program
    {
        static void Main(string[] args)
        {
            using (var blogDb = new BlogContext())
            {
                Console.Write("Enter a name for a new blog:");
                var blogName = Console.ReadLine();
                var blog = new Blog { BlogName = blogName };
                blogDb.Blogs.Add(blog);
                blogDb.SaveChanges();
                
                var result = from b in blogDb.Blogs
                             select b;
                foreach (var item in result)
                {
                    Console.WriteLine(item.BlogName);
                }
            }
            Console.ReadKey();
        }
    }

運行程序:

看來沒有什么問題,呵呵。我們再看看數據庫:

可以看出,多了個叫做“CodeFirst_2013_3_23.BlogContext”(名字起的有點長)的數據庫乖乖的躺在那里,而且表也建好了。

 

到這里為止,CodeFirst已經簡單的講解完畢。


下一節,我們討論:

如果我們的數據實體需要發生變化,比如添加一個新的數據庫實體,或者在已有的實體中添加/修改字段,我們需要怎么做?難道需要把數據庫刪掉,然后重新生成?

答案當然是:呵呵~~~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM