1. 首先推薦剛開始使用EF的同學先看下這篇文章。
http://www.cnblogs.com/shijun/archive/2012/11/16/2772676.html 踩過坑後才找到這篇文章然後恍然大悟!
再次謝謝分享這篇文章的同學。
2.下面是我參考的教程的連結
http://www.shaoqun.com/a/91504.aspx
3.以下是我按照教程做單過程中踩過的坑
運作指令Enable-Migrations
3.1直接貼錯誤資訊
More than one context type was found in the assembly 'WebApplication5'.
To enable migrations for 'WebApplication5.Models.ConnectionstringContext', use Enable-Migrations -ContextTypeName WebApplication5.Models.ConnectionstringContext.
To enable migrations for 'WebApplication5.Models.ApplicationDbContext', use Enable-Migrations -ContextTypeName WebApplication5.Models.ApplicationDbContext.
3.2正确做法
PM> Enable-Migrations -ContextTypeName WebApplication5.Models.ConnectionstringContext
3.33. PM> Update-Database
報錯資訊
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
System.InvalidOperationException: No connection string named 'MusicContext' could be found in the application config file.
at System.Data.Entity.Internal.LazyInternalConnection.Initialize()
at System.Data.Entity.Internal.LazyInternalConnection.get_Connection()
at System.Data.Entity.Internal.LazyInternalContext.get_Connection()
at System.Data.Entity.Infrastructure.DbContextInfo..ctor(Type contextType, DbProviderInfo modelProviderInfo, AppConfig config, DbConnectionInfo connectionInfo, Func`1 resolver)
at System.Data.Entity.Migrations.DbMigrator..ctor(DbMigrationsConfiguration configuration, DbContext usersContext, DatabaseExistenceState existenceState, Boolean calledByCreateDatabase)
at System.Data.Entity.Migrations.DbMigrator..ctor(DbMigrationsConfiguration configuration)
at System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.GetMigrator()
at System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.Run()
at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
at System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner runner)
at System.Data.Entity.Migrations.Design.ToolingFacade.Update(String targetMigration, Boolean force)
at System.Data.Entity.Migrations.UpdateDatabaseCommand.<>c__DisplayClass2.<.ctor>b__0()
at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command)
No connection string named 'MusicContext' could be found in the application config file.
修改辦法,直接寫傳入連結接字元串
public ConnectionstringContext() : base("Data Source = .;initial catalog=Music;integrated security=True"){ }
再次運作還是報錯,資訊如下;
資料庫中已存在名為 'Musics' 的對象。
解決辦法:
直接怒删資料庫表
重新輸入指令
PM> Update-Database 輸出正确資訊,并且資料庫表單更新完畢。
總結:code first 模式隻适合建立資料庫表,不适合修改。若有不準确的地方歡迎拍磚。