EF框架之CodeFirst建立資料庫

連江偉發表於2015-02-06

         CodeFirstEntity Framework4.1後新增的一種生成模式,在這種方式下,你不需要在DBMS中建立資料庫,也無需在VS中畫實體模型了,你要做的僅僅是寫寫程式碼即可由ORM框架自動建立模型和資料庫,非常的方便和簡單(由於開發人員只是編寫程式碼,不關心資料庫的具體結構,因此也有人把這種方式叫做CodeOnly).

    下面就以一個簡單的例子演示一下如何使用CodeFirst生成資料庫.

    一.新建一個專案並新增必要的引用.


    二.編寫程式碼.

          1在專案中新增兩個實體類和一個資料上下文類如下圖所示


    它們對應的程式碼如下:

         Customer:

<span style="font-size:18px;">public class Customer
    {
        [Key ]//標識這是對應資料庫表的主鍵
        public int Id { get; set; }

        public string CusName { get; set; }

        public virtual ICollection<OrderInfo> order { get; set; }
    }</span>

         OrderInfo:

<span style="font-size:18px;">public class OrderInfo
    {
        [Key ]//標識這個屬性是資料表中的主鍵
        public int Id { get; set; }

        public string Content { get; set; }
        /// <summary>
        /// 外來鍵約束
        /// </summary>
        public int CustomerId { get; set; }

        public Customer customer { get; set; }
    }</span>

          HotelDBContext:

<span style="font-size:18px;">public class HotelDBContext:DbContext 
    {
        public HotelDBContext()
            :base("name=ConnCodeFirst")
        {
 
        }
        public DbSet<Customer> customer { get; set; }

        public DbSet<OrderInfo> orderInfo { get; set; }
    }</span>

    然後再配置檔案App.config中編寫資料庫的連線字串,程式碼如下:

<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
	<connectionStrings >
		<add name ="ConnCodeFirst" connectionString ="server=.;uid=sa;pwd=123456;database=CodeFirstDemoDB" providerName ="System.Data.sqlclient"/>
	</connectionStrings>
</configuration></span>

    最後在控制檯應用程式的Program類中的主函式中建立資料庫,程式碼如下:

<span style="font-size:18px;"> class Program
    {
        static void Main(string[] args)
        {
            //例項化一個資料上下文物件
            HotelDBContext dbcontext = new HotelDBContext();
            //建立資料庫如果不存在的話
            if (dbcontext.Database.CreateIfNotExists())
            {
                Console.WriteLine("資料庫已建立成功!");
                Console.Read();
            }
            else { 
                Console.WriteLine ("資料庫已經存在,無需建立!");
            }
        }
    }</span>

    三.執行程式碼,生成資料庫

 

    小結一下:CodeFirst相比較而言是一種比較簡潔的資料模型生成模式,它很好地支援了以程式碼為中心的設計理念,程式碼優先的開發使得開發流程更加的優美,這樣你的專案中可以說就不會再需要.edmx那種系統自動生成的DataModel了。

相關文章