日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

CodeFrist基础_迁移更新数据

發(fā)布時(shí)間:2024/4/15 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CodeFrist基础_迁移更新数据 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一丶自動(dòng)遷移

第一次啟用遷移:NeGet-->Enable-Migrations

     public DemoDbContext(): base("name=ConncodeFirst"){
       //注冊(cè)自動(dòng)遷移Database.SetInitializer(
new MigrateDatabaseToLatestVersion<DemoDbContext, CodeFirst_Task.Migrations.Configuration>());} 注意1.Configuration.cs生成的是internal sealed class,如果不在啟動(dòng)程序集中,則需要修改成public
   2.
CodeFirst_Task這兒指命名空間


二丶代碼遷移

1.向NeGet輸入:enable-migrations –EnableAutomaticMigration:$true

則自動(dòng)生成一個(gè)文件夾Migrations,其中存在一個(gè)Configuration的類

2.最后在NeGet控制臺(tái)中輸入 update-database 運(yùn)行
這時(shí)候在運(yùn)行mvc的項(xiàng)目 數(shù)據(jù)庫(kù)表中就會(huì)自動(dòng)增加了一列或者對(duì)應(yīng)就修改了 ?原有的數(shù)據(jù)都還存在

【AutomaticMigrationDataLossAllowed = true;】判斷自動(dòng)遷移期間如果數(shù)據(jù)丟失是否可以接受

?

網(wǎng)上摘抄:

1 一. 模型設(shè)計(jì) 2 1. 遵循EF標(biāo)準(zhǔn),注意表關(guān)系配對(duì) 3 2. 數(shù)據(jù)模型里盡量把必須的屬性和說(shuō)明都寫(xiě)全 4 3. EF默認(rèn)id字段為主鍵,如果沒(méi)有,需指定主鍵 5 6 二. 數(shù)據(jù)遷移 7 1. 命令運(yùn)行環(huán)境:visual studio工具欄->工具->NuGet 程序包管理器->程序包管理器控制臺(tái) 8 2. 基本命令和常用參數(shù) 9 > get-help 獲取幫助的命令(例:get-help Enable-Migrations –detailed) 10 –detailed 詳細(xì)用法 11 > Enable-Migrations 啟用遷移 12 -Force 強(qiáng)制覆蓋 13 -ProjectName 目標(biāo)項(xiàng)目(遷移類所在的項(xiàng)目) 14 -StartUpProjectName 啟動(dòng)項(xiàng)目(包含數(shù)據(jù)庫(kù)連接字符串配置文件所在的項(xiàng)目) 15 -ContextTypeName 需要遷移的數(shù)據(jù)庫(kù)(類) 16 -ConnectionStringName 指定使用配置文件中連接字符串的名稱 17 -ConnectionString 指定使用的連接字符串 18 -ConnectionProviderName 指定連接字符串的provider名稱 19 -MigrationsDirectory 指定遷移文件的目錄(多個(gè)數(shù)據(jù)庫(kù),獨(dú)立自動(dòng)遷移用) 20 > Add-Migration 為掛起的Model變化添加遷移腳本 21 -Force 22 -ProjectName 23 -StartUpProjectName 24 -ConfigurationTypeName 指定使用的遷移配置 25 -IgnoreChanges 忽略檢測(cè)到掛起的model改變,為已有的數(shù)據(jù)庫(kù)啟用遷移創(chuàng)建一個(gè)初始的,空的遷移。 26 -ConnectionStringName 27 -ConnectionString 28 -ConnectionProviderName 29 > Update-Database 將掛起的遷移更新到數(shù)據(jù)庫(kù) 30 -Force 31 -ProjectName 32 -StartProjectName 33 -ConfigurationTypeName 34 -ConnectionStringName 35 -ConnectionString 36 -ConnectionProviderName 37 -SourceMigration 只有-Script打開(kāi)時(shí)才有效。指定遷移的名稱用作更新的起點(diǎn)。忽略則使用最后一次應(yīng)用的遷移。 38 -TargetMigration 指定將數(shù)據(jù)庫(kù)更新到哪個(gè)遷移的名稱。 39 -Script 生成SQL腳本 40 > Get-Migrations 獲取已經(jīng)應(yīng)用的遷移 41 3. 遷移操作步驟舉例: 42 DataBase :解決方案中,數(shù)據(jù)模型層項(xiàng)目名稱 43 Member :解決方案中,啟動(dòng)項(xiàng)的名稱 44 DataBase.Member.MemberEntities :需要應(yīng)用數(shù)據(jù)遷移的數(shù)據(jù)上下文 45 a. 第一次啟用遷移,輸入命令: 46 Enable-Migrations -ProjectName DataBase -StartUpProjectName Member -ContextTypeName DataBase.Member.MemberEntities 47 并敲回車鍵,然后打開(kāi)生成的Migrations文件夾中的Configuration.cs文件, 48 把構(gòu)造方法中的AutomaticMigrationsEnabled = false;改為AutomaticMigrationsEnabled = true; 49 如果有多個(gè)數(shù)據(jù)庫(kù),每個(gè)庫(kù)需要獨(dú)立指定遷移文件,命令格式如下: 50 Enable-Migrations -ProjectName DataBase -StartUpProjectName Member -ContextTypeName DataBase.Member.MemberEntities -MigrationsDirectory:MemberMigrations 51 b. 模型有改動(dòng)時(shí),輸入命令:add-migration update20150508 -ProjectName DataBase -StartUpProjectName Member -Force并敲回車鍵,創(chuàng)建遷移腳本 52 然后 輸入命令:Update-Database -Verbose -ProjectName DataBase -StartUpProjectName Member并敲回車鍵,執(zhí)行遷移操作 53 4. 配置自動(dòng)遷移 54 在應(yīng)用程序的入口方法(函數(shù))里注冊(cè)自動(dòng)遷移: 55 Database.SetInitializer(new MigrateDatabaseToLatestVersion<DataBase.Member.MemberEntities, DataBase.MemberMigrations.Configuration>()); 56 注意:Configuration.cs生成的是internal sealed class,如果不在啟動(dòng)程序集中,則需要修改成public 57 5. 脫離visual studio環(huán)境做數(shù)據(jù)庫(kù)版本遷移,可用migrate.exe,可參考:http://msdn.microsoft.com/zh-cn/data/jj618307 58 59 三. 注意事項(xiàng): 60 1. 連接字符串不用DBFirst自動(dòng)生成的那么復(fù)雜,采用如下格式即可: 61 <add name="MemberEntities" connectionString="server=.;database=Member;integrated security=true;" providerName="System.Data.SqlClient"/> 62 2. 有掛起的Model改變時(shí),會(huì)導(dǎo)致操作不正常,注意操作步驟,必要時(shí)清理掛起的遷移。 63 3. 修正后數(shù)據(jù)庫(kù),里面的數(shù)據(jù)如果需要調(diào)整,用Configuration.cs文件里的Seed方法,示例如下: 64 protected override void Seed(DataBase.Member.MemberEntities context) 65 { 66 var users = new List<User> 67 { 68 new User { Account = "test", Password = "123" }, 69 new User { Account = "admin", Password = "456" } 70 }; 71 users.ForEach(s => context.Users.AddOrUpdate(p => p.Account, s)); 72 context.SaveChanges(); 73 } View Code

?

轉(zhuǎn)載于:https://www.cnblogs.com/chenze-Index/p/9712314.html

總結(jié)

以上是生活随笔為你收集整理的CodeFrist基础_迁移更新数据的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。