程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 使用EF CodeFirst 創建數據庫,efcodefirst

使用EF CodeFirst 創建數據庫,efcodefirst

編輯:關於.NET

使用EF CodeFirst 創建數據庫,efcodefirst


EntityFramework

在VS2015添加新建項時,選擇數據->ADO.NET 實體數據模型,有一下選項

來自數據庫的EF設計器,這個就是我們最常用的EntityFramework設計模型了,選擇它,然後根據設計好的數據庫,就會生成一個edmx文件,和一個數據庫上下文,然後我們就可以不用寫sql也可以愉快的訪問數據啦,但是這種方式對於經常變動的數據庫結構,更新起來經常會有一些bug,原數據庫刪除的字段和結構,在edmx中更新模型是需要手動刪除的

CodeFirst

CodeFitst的出現給.net開發提供了一種新的方式,這種以代碼優先的數據庫模型更能適應需求的變更和產品迭代開發,接下來就以一個簡單的實例來看一下怎麼使用它吧

1.在自己的解決方案下添加一個類庫項目Domain,然後添加一個實體

    public class User
    {
        public int Id { get; set; }
        public int UserName { get; set; }
        public string Password { get; set; }
    }

2.添加數據庫上下文

    public class DBContext:DbContext
    {
        public DBContext()
            : base("Blog")
        {

        }
        public DbSet<User> Users { get; set; }
    }

3.配置數據庫連接字符串

需要注意的事,連接字符串需要寫到啟動項目中,如果當前啟動項目是Domain,那它就是以Domain的App.comfig為准,如果是web項目就是Web.config

一般情況下兩個都寫一下吧

<connectionStrings>
<add name="Blog" connectionString="server=.;database=Blog;uid=sa;pwd=123" providerName="System.Data.SqlClient"/>
</connectionStrings>

4.通常這個時候只需要運行你的程序,系統就會自動創建數據庫了,還有一種方法就是使用migration創建你的數據庫

打開程序包管理控制台,注意默認項目是Domain

PM> Enable-Migrations

你會發現Domain下多了一個Migrations文件夾,並且有一個名稱為Configuration的類(用於更新)

打開程序包管理控制台

PM> Add-Migration Init

這個時候,它會根據DBContext上下文下的模型來和以往的版本比較,並且生成更新文件,此時沒有以往版本,所以更新內容如下

namespace Domain.Migrations
{
    using System;
    using System.Data.Entity.Migrations;
    
    public partial class Init : DbMigration
    {
        public override void Up()
        {
            CreateTable(
                "dbo.Users",
                c => new
                    {
                        Id = c.Int(nullable: false, identity: true),
                        UserName = c.Int(nullable: false),
                        Password = c.String(),
                    })
                .PrimaryKey(t => t.Id);
            
        }
        public override void Down()
        {
            DropTable("dbo.Users");
        }
    }
}

Up用於更新,Down用於回退這個很好理解

PM> Update-database

打開Sql Server(如果用的localDb就在localDb中查看)查看數據庫

 

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